Как запрашивать данные, допускающие значение NULL, которые содержат ненулевые поля, через GraphQL?

Скажем, у меня есть данные, структурированные следующим образом:

house: {
    id: Int,
    address: String,
    neighborhood (Foreign Key, Nullable): {
        id: Int,
        name: String,
        city (Foreign Key, Nonnull): {
            id: Int (Nonnull)
            name: String
        }
    }
}

и я строю следующий запрос:

{
    homes {
        house {
            id
            address
            neighborhood {
                id
                name
                city {
                    id
                    name
                }
            }
        }
    }
}

GraphQL (интерфейс React Apollo, бэкэнд Graphene + Django) жалуется, что я пытаюсь вернуть null для ненулевого city.id, когда пытаюсь выполнить этот запрос. Это происходит специально для домов, у которых нет соседства (и, в свою очередь, нет города), поэтому он пытается вернуть city.id как null, когда на самом деле он не должен проникать так глубоко в структуру данных, поскольку родительский район имеет значение NULL.

Я пытаюсь получить действительные данные о районе (включая город), когда они доступны, и о районе null, когда их нет. Какой подход для этого подходит?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Что такое Apollo Client и зачем он нужен?
Что такое Apollo Client и зачем он нужен?
Apollo Client - это полнофункциональный клиент GraphQL для JavaScript-приложений, который упрощает получение, управление и обновление данных в...
0
0
283
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема, с которой я столкнулся, связана с данными в моей базе данных. Вышеупомянутый запрос работает должным образом, но у меня были поврежденные данные, которые мешали успешному выполнению запроса.

Мне удалось отладить это с помощью https://github.com/graphql/graphiql, что позволило мне быстро выполнять запросы GQL, помогая мне точно определить, какое поле данных вызывало мою ошибку.

Другие вопросы по теме