以下模式在可选对象中包含非null字段(允许整个对象为null)。 它定义了具有可选字段Child的Parent对象的列表-某些Parents允许具有空的Child。
type People {
people : [Parent]
}
type Parent {
child : Child
}
type Child {
key : String!
}
以下GraphQL查询返回父对象的预期列表(某些子对象值为空)。 但是它还会返回附加到结果的错误。 这是GraphQL中的错误吗(孩子是可选的)?还是预期的行为?
Cannot return null for non-nullable type: 'String' within parent 'Child'
答案 0 :(得分:0)
这是预期的行为。问题不是某些child
字段为空,而是某些Child
返回key
的null —这是错误中引用的String
。您不会在数据中看到null
键;相反,令人反感的子字段只会返回null
。这是因为GraphQL错误被“冒泡”到下一个可为空的父字段,如spec中所述:
由于非null类型的字段不能为null,因此传播字段错误以由父字段处理。如果父字段可能为null,则解析为null;否则,如果它是Non-Null类型,则该字段错误会进一步传播到其父字段。