如何在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 查询中将日期时间字段输出为字符串

将学说实体布尔字段设置为 0 而不是 null

如何在 Gatsby 中根据其他字段删除 GraphQL 字段?

如何在 C# 中将 null 值设置为 int?

如何在 JavaScript 中将所有对象属性设置为 null?

如何在 SQL Server Management Studio 中将列值设置为 NULL?