2017-01-18 8 views
0

私はgraphsql(graphql-jsを使用)を使用していません。graphql-jsでのgraphqlエラーとステータスメッセージ

はのは、APIのユーザーがクエリを送信し、データベース・サーバーがダウンしていると私は

data { errors } 

リスト内でのエラーとしてこの情報を返すしたいとしましょう。

データのエラーオブジェクトにアクセスし、自分自身のエラーメッセージ(データベースやサーバーの停止など)をプッシュするにはどうすればよいですか?

次に、データオブジェクトに追加メッセージオブジェクトを追加する方法が不思議です。

たとえば、ユーザーがID(例:特定のアカウント)でデータベースアイテムをリクエストし、そのアイテムが存在しないとします。今、私はこのような何かを返したいのですが:

{ 
    data: { 
     messages: [{status: "failure", message: "This account does not exist"}] 
    } 
} 

は、どのように私はそれを行うだろうと私はまた、タイプとしてメッセージを定義する必要がありますか?

答えて

0

GraphQL応答のdata財産の内側に表示されるようにerrorsmessagesフィールドを取得する唯一の方法は、あなたのGraphQLスキーマの型システムでそれらを含めると、クライアントから明示的にそれらを求めることです。ただし、クライアントが要求したかどうかにかかわらず、すべての要求で返されるカスタムerrorsフィールドとmessagesフィールドを、dataプロパティの外に含めることができます。例えば

は、あなたがexpress-graphqlを使用している場合、それはあなたがexpress-graphqlを使用していない場合は、すべての応答ペイロード(https://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L95

に余分な情報を添付することができます拡張オプションを提供し、あなたはとしてそれを見ることができます各レスポンスに独自のメタデータを含める方法の例express-graphqlはかなりシンプルなラッパーで、あなたは自分のデータをいつもレスポンスに書くことができます。たとえば、これはexpress-graphqlerrorshttps://github.com/graphql/express-graphql/blob/c92cfad64f4b18abce3cdeca36bb8553dd020773/src/index.js#L309)を結ぶ行です。あなたは同じことをすることができますが、別のキーの下で行うことができます。

運が良かった!

+0

実際、express-graphqlを使用しているので、あなたの答えは間違いなく非常に便利です。それぞれのソース行を指摘してくれてありがとう。私はすきです。 – LongHike

0

errorsおよびmessagesをクエリ結果の一部として使用する方法の1つは、それらをGraphQLオブジェクトタイプのフィールドとして含めることです。

たとえば、フィールドID、名前、エラー、およびメッセージを持つGraphQLオブジェクトタイプItemがあります。データベースサーバーが停止している場合は、errors項目の項目インスタンスのみが設定されます。指定されたIDの項目が利用できない場合は、messagesフィールドに値が設定されます。アイテムが使用可能になると、名前フィールドが設定されます。

+0

はい、ただし、クライアントで使用できるようにするために、クライアントは明示的に要求をクエリの一部として要求する必要があります。 私が間違っている場合は、私を修正してください。 – LongHike

+0

はい、クライアントは必要なものを取得します。 –

関連する問題