とでApolloStackを使用しgraphql-server-express
ていapollo-client
ます。
私のバックエンドは完全ではないため、エラーが発生する可能性があり、そのため、そのパスのエラーでリクエストに応答する必要があります。
今までの私の主な問題は認証だったので、エラーで応答しました。
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); });
ただし、クエリの1つのプロパティがエラーで応答した場合は、catch関数のみが呼び出されます。残りのプロパティのデータも転送されますが、これはChrome開発ツールの[ネットワーク]タブに表示されます。Inはcatch関数のエラーオブジェクトではありません。
私の試みは、同じオブジェクトでエラーとデータを取得するGraphiQLでうまく機能します。
では、リクエスト全体を失うことなく、プロパティのエラーをスローするにはどうすればよいですか?
約束result.error
のthen
一部を手動で探して、の使用を避けることができますcatch
。また、この特定のケースを処理するために、呼び出しの後にを追加することもできると思います。then
catch
それに加えて、GraphQLサーバーでformatErrorを使用して、エラーメッセージを手動でフィルタリングおよびフォーマットすることもできます。その関数の本体は次のとおりであり、スローされたにアクセスできますError
。
formatError: (error) => {
return {
name: error.name,
mensaje: error.message
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加