我已经在堆栈溢出中读到了一些有关此问题的解决方案,但没有一个适合我的情况。
我的mongo db collection _id是一个复合键,如下所示,
{
"_id" : {
"appId" : 1,
"name" : "my app"
},
"dataLoaded" : true,
"__v" : 0
}
app.get('/api/application',function(req,res){
Application.findOne({"_id" : req.query._id},function(err,application){
if(err){
res.status(500).send(err);
}else{
if(application){
console.log("entered")
res.status(200).send(application);
}else{
res.status(404).send(err);
}
}
})
});
app.get('/api/application',function(req,res){
Application.findOne({"_id" : {"appId" : 1,"name" : "my app"}},function(err,application){
if(err){
res.status(500).send(err);
}else{
if(application){
console.log("entered")
res.status(200).send(application);
}else{
res.status(404).send(err);
}
}
})
});
我的console.log(req.query._id)
结果{"appId" : 1,"name" : "my app"}
我无法理解我犯了什么错误。当_id不是复合键时,一切正常。
提前致谢!!
答案 0 :(得分:0)
正如sidgate在评论中建议的那样,它是一个字符串,无法解析为对象。将复合键的值作为单独的参数传递是唯一的方法。