viewer
は、リレー固有のものではありません。それは単なるフィールド名です。あなたはリハートです。このフィールドは通常、アプリケーションのユーザーまたはビューアのGraphQLObject型を表します。
ルートクエリタイプは、定義し、スキーマオブジェクト内にquery
として渡すGraphQLオブジェクトです。たとえば、todo example applicationでは、Root
です。 relay-treasurehunt example applicationで
export const schema = new GraphQLSchema({
query: Root,
mutation: Mutation,
});
、ルートクエリータイプqueryType
あります。
export const schema = new GraphQLSchema({
query: queryType,
mutation: mutationType,
});
ルートクエリタイプは、他のデータにアクセスするプライマリアクセスポイントです。これらの他のデータは、ルートクエリオブジェクトのフィールドとしてリストされます。任意のGraphQLオブジェクトと同様に、ルートクエリタイプは1つ以上のフィールドを持つことができます。 TODOのサンプルアプリケーションでは、それはviewer
という名前のフィールドがあります。リレーtreasurehunt応用例で
const Root = new GraphQLObjectType({
name: 'Root',
fields: {
viewer: {
type: GraphQLUser,
resolve:() => getViewer(),
},
node: nodeField,
},
});
を、ルートクエリのタイプはgame
という名前のフィールドがあります。
const queryType = new GraphQLObjectType({
name: 'Query',
fields:() => ({
node: nodeField,
game: {
type: gameType,
resolve:() => getGame(),
},
}),
});
は今、完全にアプリケーションに依存して、ユーザーが匿名または記録されているかどうか、アプリケーションユーザまたはWebサイトビューアを表現するviewer
フィールドがある場合。ユーザーがログインする必要がある場合は、ログイン用に突然変異を実装することができます。データへのアクセスを制限することもできます。 Jonas Helferは、サーバー側でユーザーアクセスチェックを実行する方法にexcellent answerと表示されます。