これが問題です。graphql-js でエラー処理を処理する方法を理解しようとしています。(リレー無しの場合)
十分に具体的ではありません!? さて、graphql-js は解決関数内でスローされたすべてのエラーをキャッチしているため、エラーと http 応答を適切に処理する方法について少し混乱しています。
だから私はほとんどアイデアがなかったので、あなたがそれについてどう思うか知りたいです!
エラーが含まれている場合でも、graphql 応答で常に 200 OK を返します。(あれは好きじゃない)
result.errors[0] の大文字と小文字を切り替えて、エラーに関して http 応答を返します。エラーがない場合は、result.data を返します。(これは非常に長いスイッチケースになる可能性があります)
resolve 関数と throw および object でエラー処理を処理する (例:
{ httpCode: 404, msg: 'No X found with the requested id' }
)エクスプレス app.post 関数 (または任意の Web フレームワーク) では、次のようなものがあります。
app.post('/graphql', function(req, res) { let result = await graphql(req.body); if(result.errors.size) { let e = result.errors[0]; res.status(e.httpCode).send(e.msg); } res.json(result.data); }
エラーオブジェクトのマーシャリング方法が原因で、これは現在機能しません...または、少なくともgraphqlからそれを取得する方法をまだ見つけていません。私はおそらくgraphql-jsソースを調べようと考えていますが、明らかな何かが欠けている可能性があるので、最初に皆さんに尋ねたほうがよいと思いました.
明らかに、より良いアイデアは大歓迎です!
乾杯 :D