NodeJS + MongoDB:使用findOne()从集合中获取数据
我有一个带有多个对象的集合“ companies”。每个对象都有“ _id”参数。我正在尝试从数据库获取此参数:
app.get('/companies/:id',function(req,res){db.collection("companies",function(err,collection){
console.log(req.params.id);
collection.findOne({_id: req.params.id},function(err, doc) {
if (doc){
console.log(doc._id);
} else {
console.log('no data for this company');
}
});
});
});
因此,我请求公司/ 4fcfd7f246e1464d05000001(4fcfd7f246e1464d05000001是我需要的对象的_id-
parma),并且findOne不返回任何内容,这就是为什么console.log(’该公司没有数据’); 执行。
我绝对确定我有一个带有_id =“ 4fcfd7f246e1464d05000001”的对象。我做错了什么?谢谢!
"_id": { "$oid": "4fcfd7f246e1464d05000001"
},
似乎有点奇怪…
回答:
您需要构造ObjectID而不是将其作为字符串传递。这样的事情应该起作用:
var BSON = require('mongodb').BSONPure;var obj_id = BSON.ObjectID.createFromHexString("4fcfd7f246e1464d05000001");
然后,尝试在find / findOne中使用它。
编辑:正如Ohad在评论中指出的(感谢Ohad!),您还可以使用:
new require('mongodb').ObjectID(req.params.id)
而不是createFromHexString
上面概述的。
以上是 NodeJS + MongoDB:使用findOne()从集合中获取数据 的全部内容, 来源链接: utcz.com/qa/430604.html