У меня есть одно лицо, вызывающее сбор, у которого есть несколько полей: -
{
"_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.