2016-08-11 6 views
5

GraphiQLに結果が1つのクエリー/突然変異から別のクエリー/突然変異にパイプさせる方法があるのでしょうか?ここでは、loginの突然変異を使用してviewerを取得し、viewerを使用してそのユーザーのaddressesをクエリする例を示します。これはGraphQL/GraphiQLで可能ですか?1つのクエリー/突然変異の結果を別のパイプに取り込みます。

mutation { 
    login(credentials: { 
    email: "[email protected]", 
    password: "password123", 
    passwordConfirmation: "password123" 
    }) { 
    viewer 
    } 
} 

query { 
    addresses(viewer:viewer) { 
    city 
    } 
} 
+0

あり、実験batchOperationsが備わっていますが、私はそれはまだgraphql-jsファイルに上陸だとは思いません。私はここで問題を開いた。 https://github.com/graphql/graphql-js/issues/462 – ThomasReggi

答えて

1

突然変異における選択セットの目的は、突然変異の結果として変化したデータを取り出すことができることである。しかし、それはまた、あなたがアクセスできるのであれば、突然変異の結果の種類を介している限り、関連するデータを取得することができます。 login突然変異の結果(ペイロード)タイプは、あなたが任意のフィールドを照会することができ、正常にログインしたユーザーを指しタイプUserのフィールドviewerが含まれている場合

type Address { 
    city: String 
} 
type User { 
    addresses: [Address] 
} 

のは、我々は次の種類を持っていると仮定しましょう突然変異の結果でUserの:

mutation { 
    login(credentials: { 
    email: "[email protected]", 
    password: "password123", 
    passwordConfirmation: "password123" 
    }) { 
    viewer { 
     addresses { 
     city 
     } 
    } 
    } 
} 
+0

上記の場合、ビューアはIDの他に、APIの他の部分にアクセスできるトークンです。あなたの言うことは意味がありますが、それは私を助けません。ビューア(トークン)を取得して、それをコピーして他の突然変異の引数として貼り付ける必要があります。これはバマーです。 – ThomasReggi

+0

私はクエリでは、ログインしたユーザーを表す "ユーザー"タイプが必要で、そのタイプのユーザーに関連するフィールドを追加する必要があると思います。次に、突然変異の結果の型に 'User'への参照を追加して、それを照会することができます。 あなたが言ったように、GraphQL内の以前の突然変異の結果に依存する突然変異をバッチすることはできませんが、クエリ言語外でこれを行うバッチエンドポイントを構築することは可能ですあなたのHTTPサーバー – fson

+2

私はそれが来ていると思う、まだ準備ができていない。 github.com/graphql/graphql-js/issues/462 – ThomasReggi

関連する問題