如何在graphql中将null设置为字段?
Posted
技术标签:
【中文标题】如何在graphql中将null设置为字段?【英文标题】:How to set null to field in graphql? 【发布时间】:2018-01-04 14:53:37 【问题描述】:我们在我们的项目中使用graphql,并使用graphql-java 2.3.0(我们计划更新但目前不可能)。
我正在尝试执行这样的突变:
mutation
UPDATE_User(
id:3,
type: null
) id
回复:
"errors": [
"validationErrorType": "WrongType",
"message": "Validation error of type WrongType: argument value EnumValuename='null' has wrong type",
"locations": [
"line": 5,
"column": 7
],
"errorType": "ValidationError"
],
"data": null
【问题讨论】:
【参考方案1】:Null 关键字是 GraphQL 规范中一个相对较新的补充,您使用的 graphql-java 版本还没有实现它。事实上,即使是 3.0.0 仍然没有它。即将发布的 4.0 将支持 null 关键字。
它被视为枚举的原因是因为未加引号的字符串通常是枚举,null
是唯一的例外。这在this issue 中也有解释。
【讨论】:
我明白了。谢谢你。但是推荐的解决方法是什么?我认为直到现在 graphql 用户还没有使用 null。 @Don_Quijote Null 是几个月前才添加的。在此之前,您所能做的就是根本不发送type
,但是您无法区分更新为null和保持不变的情况。如果这对您很重要,您必须将特殊标记值设置为 type
,例如type: "NONE"
并在后端适当处理。【参考方案2】:
在您的架构中,是否需要“类型”参数?
如果不是,那么直接省略它!在您的后端,当您检索 type
的值时,它将为空
【讨论】:
以上是关于如何在graphql中将null设置为字段?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Sequelize 在 GraphQL 查询中将日期时间字段输出为字符串
如何在 Gatsby 中根据其他字段删除 GraphQL 字段?