2017-02-07 6 views
0

クライアントがリクエストを送信すると、クライアントがデータに対して要求したフィールドは何か分かります。例えば、上記のリクエストでGraphQL/Sangria-Graphqlのserversideの指定されたフィールドを知る

{ 
    user { 
    name 
    address 
    } 
} 

は、クライアントがnameフィールドとユーザーのaddressフィールドを要求しました。どのように私は知っている/これらの指定されたフィールドを取得するsangria-graphql Serverの名前とアドレスをクエリを実行中に?

答えて

2

あなたはresolve()

resolve: (obj, args, auth, fieldASTs) => { 
    /* all your fields are present in selections 
     please check the fieldASTs JSON path it may vary if you are using relay 
                   connections */ 
    const requiredFields = fieldASTs.fieldNodes[0].selectionSet.selections.map(
     (set) => set.name.value 
    ); 
    // requiredFields will contain the name and address 
} 
/* fieldASTs contains fieldNames, fieldNodes and every details about your Schema 
you can get your specified fields inside fieldNodes like */ 
+0

4thパラメータを使用する必要がありますそれはgraphql-jsから右ですか? sangria-graphqlと同じようにする方法を教えてください。とにかく、私はサングリアでそれを理解しようとします。ありがとう。 –

+0

はいそれはgraphql-jsです。コードを入れてください –

+1

さて、私はそれを理解しました。私は自分のコードを 'resolve = c => {c.astFields.head.selections.map(fld => println(fld.renderCompact));に変更しました。ありがとうございました。 –

関連する問題