2017-10-28 6 views
0

クライアントが追加のアクションを実行できるように、特定のリクエストが行われたときに常にフィールドを返すことを望みます。Graphqlフィールドを常に返す方法は?

たとえば、ユーザー登録が成功した場合、私はフラッシュメッセージを表示したいと思います。しかし、フロントエンドではなくバックエンドで処理する必要があります。

クライアントは、必要な情報を保持する特定のフィールドを常に要求することができますが、見落としやすいので、必要なときにデータを返すことができます。

これは可能ですか?

+0

十分な情報が提供されていません。あなたはajaxを使用していますか(あなたの登録フォームはajax経由で提出します)?それとも、デカップリングされたフロントエンドについて話していますか?あなたはgraphqlを使っていますか?あなたはgraphqlにモジュールを使用していますか?どのバージョンのDrupal?あなたが助けを望むなら、人々があなたを助けてくれるようにする必要があります。 – 2pha

答えて

2

同じ意味で引数が必要な特定のフィールドを必要とするGraphQL仕様はありません。しかしこれはリゾルバの中で扱うことができます。あなたがgetFoosクエリと呼ばれている、とあなたはそのクエリを取得する際に、常にフィールドfooを要求するクライアントを必要とする場合、例えば、getFoosのためのあなたのリゾルバは次のようになります。

function (obj, args, ctx, info) { 
    const fields = info.fieldNodes[0].selectionSet.selections.filter(s => s.name.value) 
    if (!fields.includes('foo')) return Promise.reject(new Error('Missing field foo!')) 
    // continue resolving the query as normal 
} 

を各リゾルバは、そのよう取り4番目のパラメータは、どのフィールドが要求されたかを含む、要求に関する詳細情報を含むinfoオブジェクトです。あなたのリゾルバの中に、フィールドが含まれていることを確認してください。欠落している場合は、代わりに拒否されたPromiseを返してください。これにより、特定のフィールドが見つからない場合にクエリが失敗します。

関連する問題