通过猫鼬和节点_id进行简单查询.js不起作用

Simple query by _id with mongoose and node.js not working

本文关键字:简单 查询 不起作用 js id 节点      更新时间:2023-09-26

目标:

通过_id从 mongodb 中找到一个文档。

环境:

JavaScript, Node.js, Mongoose

所以我有这个代码...(这里是"发布"架构的一部分(

PostSchema.statics = {
   findById: function (id, cb) {
       this.findOne({ _id : { $eq: mongoose.Types.ObjectId(id) } }).exec(cb);
   }
}

然后调用此方法的其他代码:

var Post = mongoose.model('Post');
Post.findById('54986a8b43db661a0ec827e4', function(result){
     console.log(result);
});

我收到错误:无法将$eq与对象 ID 一起使用

我尝试了查询 db.posts.find({_id: {$eq: ObjectId('54986a8b43db661a0ec827e4'(}}(; 直接在 mongodb 引擎中,它可以工作,但在猫鼬中不起作用......

所以我不知道仅通过 id 进行查询该怎么办!

它不起作用,因为$eq是一个聚合运算符。 只需使用直接比较即可:

PostSchema.statics = {
   findById: function (id, cb) {
       this.findOne({ _id : id }).exec(cb);
   }
}

你不需要用id制作一个ObjectId,因为猫鼬会为你做这个转换。

但是您甚至不需要自己创建此方法,因为内置的 findById 方法执行相同的操作。