图ql突变变量



我试图使用GraphQL与graphhiql接口做一个简单的突变。我的突变是这样的:

mutation M($name: String) {
    addGroup(name:$name) {
        id,
        name
    }
}
与变量:

{
    "name": "ben"
}

但是它给了我错误:Variable $name of type "String" used in position expecting type "String!"

如果我改变我的突变为mutation M($name: String = "default"),它工作如预期。这看起来像是与类型系统有关,但是我似乎不知道是什么问题。

您可能将输入名称定义为非空字符串(如果使用js服务器,则类似type: new GraphQLNonNull(GraphQLString),或者在纯GraphQL中使用String!)。

因此您在突变中的输入必须匹配,这意味着它也必须是一个非空字符串。如果您更改为以下内容,它应该可以工作:

mutation M($name: String!) {
  addGroup(name:$name) {
    id,
    name
  }
}

如果你定义一个默认值,它将是一个非空字符串。

最后,您可以放弃在服务器中非空的要求。

我认为在您的addGroup()突变中,name的参数是String!类型,即new GraphQLNonNull(GraphQLString),但在您的突变中,您指定为String,这与类型系统相冲突。

当你有这样的错误检查你的数据库模型,在我的情况下,我检查了我的模式和mongo复数的单词导致我的错误,但我可以修复它,也检查文档。

mutation {
  createProject(
    name:"project two",
    description:"project two"
  ) {
    name
  }
}

=比;作品

最新更新