GraphQL突变变量

ben*_*nto 11 graphql graphql-js

我正在尝试使用GraphQL与GraphiQL接口进行简单的变异.我的突变看起来像这样:

mutation M($name: String) {
  addGroup(name:$name) {
    id,
    name
  }
}
Run Code Online (Sandbox Code Playgroud)

变量:

{
  "name": "ben"
}
Run Code Online (Sandbox Code Playgroud)

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

如果我改变我的突变mutation M($name: String = "default")它按预期工作.这看起来与类型系统有关,但我似乎无法弄清楚问题是什么.

小智 10

您可能将输入名称定义为非空字符串(type: new GraphQLNonNull(GraphQLString)如果使用js服务器,则使用某些链接,或者String!使用普通的GraphQL).

因此,您在变异中的输入必须匹配,这意味着还必须是非空字符串.如果更改为以下内容,则应该:

mutation M($name: String!) {
  addGroup(name:$name) {
    id,
    name
  }
}
Run Code Online (Sandbox Code Playgroud)

此外,如果您像您一样定义默认值,因为它是非空字符串.

最后,您可以放弃在服务器中成为非null的要求.