12

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

4

2 回答 2

12

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

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

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

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

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

于 2016-07-29T13:44:18.450 回答
0

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

于 2015-09-24T07:55:02.710 回答