2016-04-25 1 views
7

0.5.0 graphql-jsのリリースには、resolve関数への変更が含まれています。これには、追加のcontextパラメータが追加されるようになりました。解決関数のコンテキストおよびrootValueパラメータの使用目的は何ですか?

contextは、ユーザーセッションデータを運ぶことを目的としています。今すぐrootValueパラメータのユースケースは何ですか?

+0

私も混乱しますが、私は 'context'は主に一般的なauth関連のデータで、' rootValue'は他のアプリケーション固有のデータです。 – Joon

+0

ほとんどすべてのアプリケーションは認証ベースのアクセス制御が必要なので、私は彼らが情報argから毎回それを破壊するのではなく、便宜のために3番目の引数として置くことにしたと思います。 – Joon

+0

'rootValue'は最上位のリゾルバに渡されますが、' context'は全てのリゾルバで利用可能です。しかし、私はなぜその区別があるのか​​、 'rootValue'がいかに有用であるかについては分かりません。 –

答えて

2

RootValueはトップレベルのリゾルバの最初の引数であり、その関数ではまだ有効です。

ルートクエリ/突然変異型は、技術的にはスキーマ内の別のフィールドの解決型でもあります。非ルート型を介してアクセスするときに、その解決関数に入力値を提供することだけが可能であれば、厄介なことになります。ここでは例です:

type Mutation { 
    someMutationField: Query 
} 

type Query { 
    someField: String 
} 

schema { 
    query: Query 
    mutation: Mutation 
} 

rootValueを維持するためのもう一つの理由:サブスキーマが異なるサーバー上に存在する大規模スキーマの中に2つのGraphQLサブスキーマをマージするために使用することができます。それを可能にするには、ルート値をクエリーと共に最上位の解決関数に渡す方法が必要です。 express-graphqlに使用されている現在のHTTPトランスポートではこれを行えませんが、簡単に追加できます。

前にこのようにrootValueを使用している人はいませんでしたが、誰かがその方法で使用したり、他の用途を見つけたりする可能性が高いと思います。 GraphQL-JSから削除されました。

関連する問題