В спецификации GraphQL отсутствует понятие неопределенного значения - значения просто являются нулевыми или ненулевыми. Фактически, при изложении шагов для разрешения значения поля указывается, что значение undefined должно быть приведено к нулевому значению:
Если результат равен нулю (или другому внутреннему значению, аналогичному нулю, например, undefined или NaN), вернуть ноль.
Тем не менее, с моей головы есть несколько способов, которыми вы можете решить это:
1.) На стороне клиента создайте небольшой HOC, в который вы можете обернуть свои компоненты:
const UndefinedToNull = (Component) => (props) => {
const newProps = props.map(p => p === null ? undefined : p)
return <Component {...newProps}>
}
2.) Если вы используете Apollo в качестве клиента, вы сможете создать промежуточную ссылку, которая преобразует ноль в неопределенный. Что-то вроде:
const middlewareLink = new ApolloLink((operation, forward) => {
return forward(response).map(result => {
// transverse the result, mutating it as needed
return result
})
}
3.) На стороне сервера, если вы используете apollo-server
, вы можете использовать опцию конфигурации formatResponse
, чтобы пересечь ответ GraphQL и преобразовать значения null или undefined при необходимости. YMMV с другим промежуточным ПО GraphQL.