У меня есть установка промежуточного ПО 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: я попробовал подход к обработке такого рода ошибки на
внешний интерфейс вместо резольвера. Это предложенный способ
обработка таких ошибок?