【问题标题】:GraphQL mutation variablesGraphQL 变异变量
【发布时间】:2015-12-15 22:22:27
【问题描述】:

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

【问题讨论】:

    标签: graphql graphql-js


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 难以置信,! 是问题所在......唉,这确实有道理!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2021-01-04
      • 2019-07-15
      • 2016-12-02
      • 2018-05-31
      • 2020-01-21
      • 2021-01-19
      • 1970-01-01
      • 2018-03-02
      • 2019-08-19
      相关资源
      最近更新 更多