Я использую стек Apollo с graphql-server-express
и apollo-client
.
Поскольку мой backend не является совершенным, ошибки могут появляться, и поэтому я должен отвечать на запрос с ошибкой для этого пути.
До сих пор моей основной проблемой была аутентификация, и поэтому я ответил с ошибкой.
return new Error(`${data.status}: ${data.statusText} @ ${data.url}`)
В интерфейсе я использую apollo-client для запроса данных.
return apollo
.query({query: gql`
query {
${query}
}`,
forceFetch: forceFetch
})
.then(result => { debugger; return result.data })
.catch(error => { debugger; console.error(error); });
Но если одно свойство запроса отвечает ошибкой, будет вызываться только функция catch. Даже данные остальных свойств передаются, я вижу это на вкладке сети в Chrome Dev Tools. In не является объектом ошибки в функции catch.
Моя попытка отлично работает с GraphiQL, где я получаю ошибки и данные в одном и том же объекте.
Итак, как я могу выбросить ошибки для свойства без потери всего запроса?