GraphQL不是可为空的对象的null字段返回错误

时间:2019-03-15 10:44:10

标签: graphql

以下模式在可选对象中包含非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'

1 个答案:

答案 0 :(得分:0)

这是预期的行为。问题不是某些child字段为空,而是某些Child返回key的null —这是错误中引用的String。您不会在数据中看到null键;相反,令人反感的子字段只会返回null。这是因为GraphQL错误被“冒泡”到下一个可为空的父字段,如spec中所述:

  

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