带有Mongo的Sails.js无法通过_id找到

时间:2016-07-22 18:42:13

标签: node.js mongodb mongoose sails.js

我正在尝试使用集合的_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
});

那么,我做错了什么?,我无法弄明白。我知道(想)我可以用“原生”来做,但这是唯一的方法???

谢谢!

1 个答案:

答案 0 :(得分:2)

根据我对sails.js应用程序的体验,只有你的最后一个选项才有效。

  • 使用sails.js和Waterline时,您必须使用id而不是_id(您的最后一个选项)。
  • 通过Waterline使用MongoDB原生调用时,您必须使用_idnew ObjectId()(第一个选项中的查询参数)。