Обработка состояний ошибки бэкэнда в GraphQL - PullRequest
0 голосов
/ 28 августа 2018

У меня есть установка промежуточного ПО GraphQL, которая обрабатывает выборку данных из нескольких источников. Я использую запрос, подобный этому, чтобы выполнить мутацию.

mutation createBook ($input: BookInput!) {
  bookObject {
    id
    name
    author: author {
      id
      name
    }
  }
}

У меня здесь два резольвера, один для мутации createBook, а другой для разрешения автора, который ожидает author_id

Теперь, если есть ошибка, которая мешает созданию книги на бэкэнде, я обрабатываю ее в распознавателе, написанном в промежуточном программном обеспечении. Я создаю объект ошибки и отправляю результаты обратно во внешний интерфейс. Это принимает форму -

{ 
  errors: [{
    message: "There is already a book with this name."
  }]

}

Так как createBook здесь равен нулю, распознаватель выдает ошибку, говоря: author_id is undefined.

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

Есть ли лучший способ обработки ошибок такого рода перед передачей в пользовательский интерфейс?

PS: я попробовал подход к обработке такого рода ошибки на внешний интерфейс вместо резольвера. Это предложенный способ обработка таких ошибок?

...