我正在使用graphql解析器从数据库mongodb获取关系文档。
const resolvers = {
User: {
friends: async (parent, __, ctx) => {
let friend = await ctx.db
.collection("friends")
.find({userID: "hardcodeID"})
.toArray();
return friend; // work!
}
}
}
当我从父级传递 id 时,这将失败。parent._id打印。是的,它返回 id 的值。发生此问题的原因是什么?我想在 Find 方法中时parent._id为空。但是,它是异步等待功能,应该得到值吗?
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; // []
}
}
尝试在parent._id
上调用.toString()
。看看你的例子,其中.find({userID: "hardcodeID"})
工作正常,这表明在您的freinds
模式中,userID
被指定为String
和您的传入,看起来像一个ObjectID
。
const resolvers = {
User: {
friends: async (parent, __, ctx) => {
let friend = await ctx.db
.collection("friends")
.find({userID: parent._id.toString()})
.toArray();
return friend;
}
}