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
}
}
此外,如果您像您一样定义默认值,它将是一个非空字符串。
最后,您可以放弃在服务器中为非空值的要求。
我正在尝试使用带有 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
}
}
此外,如果您像您一样定义默认值,它将是一个非空字符串。
最后,您可以放弃在服务器中为非空值的要求。