0.5.0
graphql-jsのリリースには、resolve
関数への変更が含まれています。これには、追加のcontext
パラメータが追加されるようになりました。解決関数のコンテキストおよびrootValueパラメータの使用目的は何ですか?
context
は、ユーザーセッションデータを運ぶことを目的としています。今すぐrootValue
パラメータのユースケースは何ですか?
0.5.0
graphql-jsのリリースには、resolve
関数への変更が含まれています。これには、追加のcontext
パラメータが追加されるようになりました。解決関数のコンテキストおよびrootValueパラメータの使用目的は何ですか?
context
は、ユーザーセッションデータを運ぶことを目的としています。今すぐrootValue
パラメータのユースケースは何ですか?
RootValueはトップレベルのリゾルバの最初の引数であり、その関数ではまだ有効です。
ルートクエリ/突然変異型は、技術的にはスキーマ内の別のフィールドの解決型でもあります。非ルート型を介してアクセスするときに、その解決関数に入力値を提供することだけが可能であれば、厄介なことになります。ここでは例です:
type Mutation {
someMutationField: Query
}
type Query {
someField: String
}
schema {
query: Query
mutation: Mutation
}
rootValueを維持するためのもう一つの理由:サブスキーマが異なるサーバー上に存在する大規模スキーマの中に2つのGraphQLサブスキーマをマージするために使用することができます。それを可能にするには、ルート値をクエリーと共に最上位の解決関数に渡す方法が必要です。 express-graphqlに使用されている現在のHTTPトランスポートではこれを行えませんが、簡単に追加できます。
前にこのようにrootValueを使用している人はいませんでしたが、誰かがその方法で使用したり、他の用途を見つけたりする可能性が高いと思います。 GraphQL-JSから削除されました。
私も混乱しますが、私は 'context'は主に一般的なauth関連のデータで、' rootValue'は他のアプリケーション固有のデータです。 – Joon
ほとんどすべてのアプリケーションは認証ベースのアクセス制御が必要なので、私は彼らが情報argから毎回それを破壊するのではなく、便宜のために3番目の引数として置くことにしたと思います。 – Joon
'rootValue'は最上位のリゾルバに渡されますが、' context'は全てのリゾルバで利用可能です。しかし、私はなぜその区別があるのか、 'rootValue'がいかに有用であるかについては分かりません。 –