node.js - Sails.js 与 Mongo 无法通过 _id 找到

标签 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
});

所以,我做错了什么?,我不明白。我知道(认为)我可以使用“native”来做到这一点,但这是唯一的方法吗???

谢谢!

最佳答案

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

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

关于node.js - Sails.js 与 Mongo 无法通过 _id 找到,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38533341/

相关文章:

javascript - 如何在循环内使用 JavaScript 创建 waitFor(delay) 函数?

node.js - req.session.destroy() 在 Nodejs 中不起作用

node.js - 如何更改 Passport 以使用电子邮件而不是用户名进行身份验证?

javascript - 带选项参数的 Handlebars 编译函数

node.js - 服务器中的 MongoDB 聚合()错误

Node.js + Mongoose/Mongo 和缩短的 _id 字段

java - Elasticsearch River - java.lang.String 无法转换为 java.util.Map

javascript - for 循环内的 value.length 不起作用。 Mongoose ejs

javascript - 如何访问分配给另一个对象的属性的数组内的对象的属性?

node.js - 更新mongoDB文档需要两次