Как получить такой же вложенный объект в GraphQL - PullRequest
1 голос
/ 02 августа 2020

У меня есть одно лицо, вызывающее сбор, у которого есть несколько полей: -

{
    "_id": {
        "$oid": "5f26e8ef969cc80d9710b250"
    },
    "firstName": "xxxxxxx",
    "lastName": "xxxxxx",
    "email": "xxxxxxxx@gmail.com",
    "userName": "xxxxxx",
    "friends": [
       {
          "$numberInt": "2001" // person identity
       }, 
       {
         "$numberInt": "1002" // person identity
       }
    ],
    "personIdentityCount": {
        "$numberInt": "1000"
    }
}

Друзья - это массив, в котором есть уникальный счетчик личности, и мы можем идентифицировать человека по нему, значит, если мы ищем 1002 человека количество идентификационных данных, это даст нам данные о человеке.

Я создал схему и набрал: -

const personType=new GraphQLObjectType({
    name: "Person",
    fields:{
        id: { type: GraphQLID },
        firstName: { type: GraphQLString },
        lastName: { type: GraphQLString },
        email: { type: GraphQLString },
        userName: { type: GraphQLString },
        count: { type: GraphQLInt },
        friends:{
            type: new GraphQLList(PersonType), // getting an error " personType is not defined "
            resolve: (person) => person.friends.map(id => getPersonByPersonIdentityCount(id))
        }
    }
});

Я получаю сообщение об ошибке personType не определен в типе друзей ({type: new GraphQLList (PersonType)}).

===== Схема для GraphQL =====

const scheam = new GraphQLSchema({
    query: new GraphQLObjectType({
        name: "Query",
        fields: {
            people: {
                type: GraphQLList(personType),
                resolve: async (root, args, context, info) =>
                {
                    return PersonModel.find().exec();
                }
            },
            person: {
                type: personType,
                args: {
                    id: { type: GraphQLNonNull(GraphQLID) }
                },
                resolve: (root, args) => getPersonByPersonIdentityCount(args.id)
            }
        }
    })

});

Я хочу, если я прошу друга в запросе graphQl, тогда значение друзей должно приходите.

# ожидаемый ответ

    person(id:"5f26a1e8034dec6713cbd28e"){
    id,
    firstName,
    friends{
      id,
      firstName,
      lastName
    }
  }
}

Я могу решить эту проблему на уровне базы данных, но мне нужно решение на graphQL.

...