#javascript #graphql
#язык JavaScript #graphql
Вопрос:
Как я могу сгруппировать свои запросы в пространства имен в GraphQL? У меня есть что-то вроде этого прямо сейчас:
const queryType = new g.GraphQLObjectType({ name: "Query", fields: fields, });
и у fields
меня есть сопоставления полей -gt; объектов, и это работает нормально, но я хотел бы сгруппировать эти сопоставления в две группы (gt; live
и historical
). Однако, если я изменю приведенный выше код на этот:
const queryType = new g.GraphQLObjectType({ name: "Query", fields: { historical: { type: new g.GraphQLObjectType({ name: "historical", fields: fields, }) } }, });
все решает null
. Как я могу написать распознаватель для этой группы? Возможно ли это вообще?
Комментарии:
1. Вы хотите рекурсивно разрешать типы объектов? Например, скажем, у меня есть
type Person
и запрос{ me: { name father: {name father: { name } }}}
, он должен вернуть 3 человека: меня, папу, дедушку?2. Вы не определили функцию распознавателя для
.historical
, и вrootValue
вашей схеме тоже нет такого свойства. Так оноnull
и есть .3. Я не пытаюсь повторно разрешать типы, я просто хотел бы добавить пространство имен в свои запросы. Могу ли я написать функцию распознавания, которая работала бы в этом случае?
Ответ №1:
так часто люди хотят пространства имен ради разделения кода, не уверены, является ли это вашей конечной целью, но вы могли бы достичь этого и таким образом:
# in one file type Mutation { login(username: String, password: String): User } # in other file extend type Mutation { postX(title: String, message: String): X }
Комментарии:
1. Это не решение моей проблемы , так как я не использую
gql
, но объекты, и я вообще не использую мутации.2. не имеет значения, является ли это мутацией, вы можете просто изменить тип запроса. но если вы не используете gql, то это действительно не решение.