Как запрашивать данные, допускающие значение 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 район, когда их нет. Какой подход для этого подходит?


person Ankit Aggarwal    schedule 24.06.2018    source источник


Ответы (1)


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

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

person Ankit Aggarwal    schedule 11.07.2018