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

回到顶部