【发布时间】:2016-07-22 18:42:13
【问题描述】:
我正在尝试使用集合的 _id 在 Mongo 上查找记录。我传递了 _id,我尝试过作为 String 和 ObjectId,但没有人工作。奇怪的是,使用 findOne 它返回一个完全不同的记录,具有不同的 _id。如果我只使用 find 和 where 获取所有记录,它根本不会过滤任何内容。
如果我使用另一个字段进行搜索,那么它可以工作并获得正确的记录,但我想使用 _id 字段进行搜索。这是我迄今为止尝试过的:
MyModel.findOne({where: {_id: new ObjectId("57926086e2a4ff010eeb8c83")}}).exec(function (err, record){
//record completely different
});
MyModel.findOne({where: {_id:"57926086e2a4ff010eeb8c83"}}).exec(function (err, record){
//record completely different
});
MyModel.findOne({id: new ObjectId("57926086e2a4ff010eeb8c83")}).exec(function (err, record){
//record completely different
});
MyModel.findOne({id:"57926086e2a4ff010eeb8c83"}).exec(function (err, record){
//record completely different
});
那么,我做错了什么?,我想不通。我知道(认为)我可以使用“native”来做到这一点,但这是唯一的方法吗???
谢谢!
【问题讨论】:
-
你是在使用 Mongoose,还是在使用 Waterline?
-
@robertklep Hummm,我怎么知道?在 connection.js 中,我刚刚使用适配器sails-mongo 配置了部分someMongodbServer。
-
在这种情况下,我认为您正在使用 Waterline(我没有任何经验)。
mongoose标签让我很困惑,因此提出了这个问题。 -
您好,我也面临同样的问题,能否请您分享 MyModel 属性并更正 findOne 查询
标签: node.js mongodb mongoose sails.js