gpt4 book ai didi

javascript - 通过 _id 使用 mongoose 和 node.js 进行简单查询不起作用

转载 作者:行者123 更新时间:2023-12-03 11:10:42 25 4
gpt4 key购买 nike

目标:

通过 _id 从 mongodb 查找一个文档。

环境:

JavaScript、Node.js、Mongoose

所以我有这段代码...(这里是“Post”架构的一部分)

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 与 ObjectId 一起使用

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

所以我不知道如何仅通过 id 进行查询!

最佳答案

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

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

您不需要从 id 中创建一个 ObjectId,因为 Mongoose 会为您进行转换。

但是您甚至不需要自己创建此方法作为内置 findById方法做同样的事情。

关于javascript - 通过 _id 使用 mongoose 和 node.js 进行简单查询不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com