Если вы пометите поле как ненулевое (добавив !
к типу), а затем разрешите это поле равным нулю, GraphQL всегда выдаст ошибку -это неизбежно.Если для поля возможно завершить работу с нулевым значением в нормальной работе вашего API, , вы, вероятно, должны сделать его обнуляемым .
Однако ошибки "всплывают" к ближайшему обнуляемому полю.
Итак, нам дана такая схема:
type Query {
cars: [Car!]!
}
type Car {
registration: Registration!
}
и этот запрос
{
cars {
registrations
}
}
, разрешающий поле registration
для любого *От 1021 * до null
приведет к следующему, поскольку поле cars
не равно нулю, и каждый отдельный Car
также не должен быть null
:
{
"data": null,
"errors": [...]
}
Если вы задаете поле carsnullable ([Car!]
), ошибка на этом остановится:
{
"data": {
"cars": null
},
"errors": [...]
}
Однако, вы можете сделать каждый Car
nullable (независимо от того, является ли поле или нет), что позволит ошибке прекратить там и привести кв массиве объектов и нулей (нулями являются автомобили, которые допустили ошибку).Таким образом, создание cars
типа [Car]!
или [Car]
даст нам:
{
"data": {
"cars": [{...}, {...}, null]
},
"errors": [...]
}