GraphQL: прием ответа на запрос с отсутствующим запрошенным полем?

У меня есть запрос Apollo GraphQL для извлечения фильмов из моего бэкэнда, и бэкэнд условно добавляет дополнительные поля в ответ, если обнаруживает пользователя с открытым сеансом (файл cookie аутентификации).

Дело в том, что интерфейс использует один и тот же запрос независимо от того, вошел ли пользователь в систему или нет, и всегда запрашивает поле, зависящее от пользователя, указывающий, находится ли фильм в коллекции пользователей, и делает это, даже если пользователь не вошел в систему, поскольку это бэкэнд. тот, который решает.

Конечно, когда ни один пользователь не вошел в систему и интерфейс запрашивает это поле, сервер решает не отправлять его, а отправлять только общедоступные поля (название, жанр ...), и запросы завершаются ошибкой. У меня есть два решения по этому поводу, но они мне не нравятся:

  1. Add a variable to the query with @include, указывающий, вошел ли пользователь в систему или нет, чтобы получить поле условно. Мне это не нравится, потому что это кажется лишним, поскольку серверная часть уже проверяет это автоматически с помощью поиск активных сессий в контексте (cookie включен в запрос). Это решение было бы приемлемым, если бы я мог добавить переменную только в запрос внешнего интерфейса.

  2. Make the backend always send the field, даже если ни один пользователь не вошел в систему, и в этом случае он отправляет его пустым или ложным. Не нравится, потому что это лишний трафик, особенно учитывая что я планирую добавить много других пользовательских полей (рейтинги и т. д.), и что я ожидаю, что многие пользователи использовать приложение без аутентификации.


TL; DR

Итак, мой вопрос:

Есть ли способ запросить поле в запросе GraphQL и принять ответ, даже если он вообще не включает это поле (даже не определено), при этом требуя других полей? Как лучше всего решить эту проблему, используя всего один запрос?

Я пытаюсь сделать это с помощью одного запроса, чтобы не связывать запросы в моем интерфейсе.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
21
1

Ответы 1

Если я правильно вас понял, я думаю, вы можете создать преобразователь для полей, зависящих от пользователя.

Я точно не знаю схему, но это выглядело бы так:

type Movie {
   title: String
   ...more fields here
   userSpecificInformation: UserSpecificInformation
}

а затем вы определяете преобразователь для UserSpecificInformation.

Для получения дополнительной информации ознакомьтесь с https://graphql.org/learn/execution/

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