GraphQL 突变变量

GraphQL mutation variables

我正在尝试使用带有 GraphiQL 界面的 GraphQL 进行简单的更改。我的变异看起来像这样:

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"),它会按预期工作。这看起来与类型系统有关,但我似乎无法弄清楚问题所在。

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

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

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

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

此外,如果您像您一样定义默认值,它将是一个非空字符串。

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