Запрос нулевого значения возвращает ошибку load.load в graphql

Я работаю над приложением для реагирования. Я хочу использовать этот запрос:

const Newss = gql`
  query getNewssData {
    newss(ordered: true) {
      id
      title
      content
      event{
        id
        title
      }
    }
  }
`;

выполняется этим кодом реакции:

<Query query = {Newss}>
  {({ loading, error, data }) => {
    if (loading) return LoadingNews();
    if (error) return `Error! ${error.message}`;
    return data.newss.map(news => newssToRender(news));
  }}
</Query>

Но он возвращает ошибку! потому что есть новости без событий. Как разрешить делать этот запрос иногда, даже если событие может быть нулевым?

Спасибо большое за помощь !

Изая

Примечание :

function newssToRender(news) {
  if (news.event === null) {
    return newssToRenderWithoutEvent(news);
  }
  return (
    <div>
      <News
        title = {news.title}
        content = {news.content}
        eventid = {news.event.id}
        eventTitle = {news.event.title}
        pictureSrc = {news.picture}
      />
    </div>
  );
}
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
0
316
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Ошибка указывает, что поле имеет тип, отличный от Null, который является специальным типом в GraphQL, который является оболочкой для другого типа. Ненулевые поля не могут возвращать значение NULL и в этом случае вызовут ошибку. Это ничем не отличается от поля, объявляющего Int, а затем возвращающего String - был предоставлен неправильный тип (и его нельзя было принудить), поэтому возникает ошибка.

Схема - это контракт для взаимодействия сервер-клиент. Если поле имеет определенный тип, сервер фактически гарантии, что поле всегда будет этого типа. Это ограничивает работу с клиентом, поскольку устраняет необходимость проверки типа ответа на стороне клиента.

К сожалению, вы мало что можете сделать, потому что такие ошибки представляют собой проблему с самим серверным кодом. Если имеет смысл, чтобы событие иногда было нулевым, тогда поле следует сделать допускающим значение NULL. В противном случае любой базовый код должен быть исправлен, чтобы поле никогда не возвращало null. Правильный курс действий - сообщить об ошибке автору API (или исправить код самостоятельно, если это вы!).

Спасибо за ваш ответ. Теперь мне действительно все ясно. Я думал, что возникла проблема с schema.gql, но на самом деле она исходит от загрузчика шлюза.

Izaya 27.12.2018 17:07

Это действительно была проблема со шлюзом:

event: (root, args, context) => context.loaders.event.load(root.event)

заменяется :

event: (root, args, context) => root.event ? context.loaders.event.load(root.event) : null,

разрешить нулевое значение

Спасибо даниэль

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