我最近开始使用GraphQL。我可以使用名称的基础从mongodb集合中获取记录,但是如果我尝试使用相同的代码通过_id获取数据(mongodb生成的id),我将获得所有字段的空值。 这是我的示例代码......
query: new GraphQLObjectType({
name: 'RootQueryType',
fields: {
// To get a user based on id
getUser: {
type: UserType,
args: {
_id: {
description: 'The username of the user',
type: new GraphQLNonNull(GraphQLString)
}
},
resolve: (root, {_id}) => {
//Connect to Mongo DB
return mongo()
.then(db => {
return new Promise(
function(resolve,reject){
//Query database
let collection = db.collection('users');
collection.findOne({ _id},(err,userData) => {
if (err) {
reject(err);
return;
}
console.log(userData);
resolve(userData);
});
})
});
}
},
,示例查询为:
{
getUser ( _id: "55dd6300d40f9d3810b7f656")
{
username,
email,
password
}
}
我得到的反应如下:
{
"data": {
"getUser": null
}
}
如果需要,请建议我进行任何修改...... Thanq。
答案 0 :(得分:2)
因为" _id"由mongoDB生成的字段不仅仅是一个字符串,它实际上是ObjectId("你的ID字符串在这里")。
因此,在您的查询中,mongoDB找不到任何等于您提供给它的字符串的_id。
尝试使用collection.findById()。