【发布时间】:2017-10-30 06:56:45
【问题描述】:
我已经阅读了一些关于堆栈溢出的解决方案,但没有一个适合我的情况。
我的mongo db集合_id是如下图的复合键,
Mongo db 应用程序集合
{
"_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 不是复合键时,一切正常。
提前致谢!!
【问题讨论】:
-
req.query._id在应该是字符串时如何解析为对象? API是如何调用的?请分享网址 -
@sidgate 这就是我调用 $http.get('/api/application',{params:{"_id":appDb._id}}) 的方式,认为您的评论给了我必要的解释。所以它是一个字符串。我是新手。非常感谢。
-
即使将字符串转换为对象,您仍然做错了。见How to query nested objects?。永远不要尝试匹配“对象”,即使您认为自己确定了键。而是对属性的内部路径使用“点表示法”,这样可以确保嵌套属性“以任何顺序”匹配。
标签: node.js mongodb rest mean-stack