GraphQL 变异变量
Posted
技术标签:
【中文标题】GraphQL 变异变量【英文标题】:GraphQL mutation variables 【发布时间】: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")
,它会按预期工作。这看起来与类型系统有关,但我似乎无法弄清楚问题所在。
【问题讨论】:
【参考方案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
,这与类型系统冲突。
【讨论】:
以上是关于GraphQL 变异变量的主要内容,如果未能解决你的问题,请参考以下文章