Ответ 1
viewer
не является специфичным для реле. Это просто название поля. Вы rihgt. Это поле обычно представляет собой тип GraphQLObject для пользователя или зрителя приложения.
Тип запроса root - это объект GraphQL, который мы определяем и передаем как query
в объекте схемы. Например, в пример приложения todo, он Root
.
export const schema = new GraphQLSchema({
query: Root,
mutation: Mutation,
});
В приложение-приложение-приложение treasurehunt, тип запроса root queryType
.
export const schema = new GraphQLSchema({
query: queryType,
mutation: mutationType,
});
Тип запроса root - это основная точка доступа, к которой осуществляется доступ к другим данным. Эти другие данные перечислены как поля корневого объекта запроса. Как и любой объект GraphQL, тип запроса root может иметь одно или несколько полей. В приложении примера todo у него есть одно поле с именем viewer
:
const Root = new GraphQLObjectType({
name: 'Root',
fields: {
viewer: {
type: GraphQLUser,
resolve: () => getViewer(),
},
node: nodeField,
},
});
В приложении примера relay-treasurehunt корневой тип запроса имеет одно поле с именем game
.
const queryType = new GraphQLObjectType({
name: 'Query',
fields: () => ({
node: nodeField,
game: {
type: gameType,
resolve: () => getGame(),
},
}),
});
Теперь, если для представления пользователя приложения или веб-сайта существует поле viewer
, независимо от того, является ли пользователь анонимным или зарегистрировано полностью, зависит от приложения. Если пользователю необходимо войти в систему, вы можете реализовать мутацию для входа. Вы также можете ограничить доступ к данным. Jonas Helfer опубликовал отличный ответ о том, как можно проверить доступ пользователей серверная сторона.