Как определить GraphQLObjectType для вложенного объекта или списка объектов в том же родительском объекте - PullRequest
0 голосов
/ 01 мая 2018

Для моего объекта MongoDB у меня есть схема с таким количеством вложенных данных.

однако я отлично реализовал в GraphQL запрос для получения данных, но я не могу получить вложенные данные, так как не могу определить типы.

fields() {
        return {
            name: {
                type: GraphQLString,
                description: 'Name of the person'
            },
            age: {
                type: GraphQLString,
                description: 'Age'
            },
            documents: { // what to do here
                type: new GraphQLList(),
                description: 'All documents for the person'
            }
       }
}

Исходные данные примерно такие.

{
    "_id" : ObjectId("5ae1da5e4f00b5eee4ab84ee"),
    "name" : "Indira Gandhi International Airport",
    "age" : 54,
    "documents" : [
        {
             "doc_name" : "personal card",
             "doc_url" : "http://",
             "status" : true
        },
        {
             "doc_name" : "bank card",
             "doc_url" : "http://",
             "status" : true
        }
     ],
    "latitude" : "",
    "longitude" : "",
    "timezone" : "Asia/kolkata"
    .......
}

Я новичок в GraphQL, пожалуйста, помогите.

1 Ответ

0 голосов
/ 01 мая 2018

Я полагаю, что вы пытаетесь здесь сделать, чтобы поле ваших документов было списком документов. Для этого вам нужно создать «документ» GraphQLObjectType для перехода в new GraphQLList() в поле документов. Вот так:

const DocumentType = new GraphQLObjectType({
  name: 'DocumentType',
  fields: {
    doc_name: {
      type: GraphQLString
    },
    doc_url: {
      type: GraphQLString
    },
    status: {
      type: GraphQLBoolean
  }
});

Затем, после того, как вы создали это, либо в том же файле (или в другом файле и обязательно импортировали) с правильными зависимостями, вы подключаете его к коду, который вы разместили выше, так:

fields() {
        return {
            name: {
                type: GraphQLString,
                description: 'Name of the person'
            },
            age: {
                type: GraphQLString,
                description: 'Age'
            },
            documents: {
                type: new GraphQLList(DocumentType),
                description: 'All documents for the person'
            }
       }
}  

Надеюсь, это поможет.

...