Как сгруппировать объекты запроса GraphQL в пространства имен?

#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, то это действительно не решение.