#mongodb #graphql
#mongodb #graphql
Вопрос:
Я использую распознаватель graphql для получения документа отношения из базы данных mongodb.
const resolvers = {
User: {
friends: async (parent, __, ctx) => {
let friend = await ctx.db
.collection("friends")
.find({userID: "hardcodeID"})
.toArray();
return friend; // work!
}
}
}
При передаче идентификатора от родителя произойдет сбой. Я печатаю его как parent._id. Да, он возвращает значение идентификатора. В чем причина возникновения этой проблемы? я предполагаю, что родитель._id равно нулю, когда внутри метода find . Но, это асинхронная функция ожидания, должна ли получить значение ya?
const resolvers = {
User: {
friends: async (parent, __, ctx) => {
let friend = await ctx.db
.collection("friends")
.find({userID: parent._id})
.toArray();
console.log(parent_.id) // someIdFromParent
return friend; // []
}
}
Ответ №1:
Попробуйте вызвать .toString()
on parent._id
. Глядя на ваш пример, где .find({userID: "hardcodeID"})
все работало нормально, это наводит на мысль, что в вашей freinds
схеме userID
указано как a String
, а ваша передача выглядит как an ObjectID
.
const resolvers = {
User: {
friends: async (parent, __, ctx) => {
let friend = await ctx.db
.collection("friends")
.find({userID: parent._id.toString()})
.toArray();
return friend;
}
}
Комментарии:
1. Добро пожаловать 🙂 @Wilker