当前位置: 首页 > 知识库问答 >
问题:

GraphQL not null可空对象字段返回错误

微生嘉祥
2023-03-14

以下模式在可选对象中包含非空字段(整个对象允许为空)。它定义了一个父对象的列表,这些父对象具有可选字段“孩子”——一些父对象允许具有空“孩子”。

type People {
people : [Parent]
}

type Parent {
child : Child
}

type Child {
key : String!
}

以下GraphQL查询返回预期的父对象列表(其中一些具有null子值)。但它也返回附加到结果的错误。这是GraphQL(孩子是可选的)中的错误吗?还是预期行为?

Cannot return null for non-nullable type: 'String' within parent 'Child'

共有1个答案

屠昌胤
2023-03-14

这是预期的行为。问题不在于某些子项字段为空,而在于某些子项返回空值——这就是错误中引用的字符串。你不会在数据中看到null键;相反,有问题的子字段将只返回null。这是因为GraphQL错误会“冒泡”到下一个可为空的父字段,如规范中所述:

由于非Null类型的字段不能为Null,因此会传播字段错误以由父字段处理。如果父字段可能为null,则它将解析为null,否则,如果它是非null类型,则字段错误将进一步传播到它的父字段。

 类似资料:
  • 我们有一个方法,其中我们收到一个

  • 我有以下块,在该块中,我期待来自的方法的响应: 我期待的响应类型为,请求正确执行,状态为200OK,但是模型的所有字段都为null,因此我从REST调用接收的响应没有被绑定(映射)。的必填字段注释为:

  • 我有一个可选对象: 我想返回或如果为空返回。 我们是否有比遵循更复杂的方法来实现这一点?

  • 我试图模拟一个对象,该对象返回一个带有Mockito的Java可选对象: 当被调用,它返回。 我希望方法返回 返回的任何原因? 方法如下: 以下是Junit:

  • 我开始进入WP开发,我有问题与ACF后对象返回空,我不知道为什么。我创建了一个ACF,分类法的位置等于类别然后字段设置为... 字段名称:推荐的\u资源 然后在岗位上 我得到了无效的任何帮助或指向正确的方向都是非常感谢的。

  • 问题内容: 在浏览一些旧代码时,我遇到了这个宝石: 第二行在Eclipse中被标记为无效代码,我知道为什么。似乎没有明确抛出任何异常,并且构造函数不可能抛出任何类型的异常(例如)。 我的问题是 为什么 要进行空检查?以前在Java的旧版本中,构造函数是否可以返回null?还是这仅仅是毫无用处的代码? 问题答案: 该代码在任何Java版本中均无效。构造函数不可能返回,即使构造函数会抛出异常,也不会调