用猫鼬获取 _id

Gab*_*kel 1 javascript mongoose mongodb node.js

我试图使用 Mongoose 对我的 mongodb 集合中的所有记录进行 console.log(record._id) 。我一直在undefined获取每个 _id 值。

我一直在挣扎,直到我碰到了这篇文章。然后我使用 console.dir 来查找 _id 的位置并在我的 console.log 中使用它:

MySchemaModel.find({}).then(function(records) {

  records.forEach(function(record) {

    console.log(record._doc._id); // <-- I added ._doc
  });

});
Run Code Online (Sandbox Code Playgroud)

但是,这看起来很糟糕。有一个更好的方法吗?

注意:这不仅仅是影响 console.log 的东西。我只是保持问题的狭窄。

Sha*_*Roy 6

如果你想自定义/编辑记录,那么你应该使用.lean()函数。该.lean()函数会将它变成一个普通的 JavaScript 对象。如果您不使用.lean()函数,那么每条记录仍然是一个猫鼬文档,并且_id在该上下文中的行为有所不同。所以可以使用像

MySchemaModel.find({}).lean().exec(function(error, records) {
  records.forEach(function(record) {
    console.log(record._id);
  });
});
Run Code Online (Sandbox Code Playgroud)

注意:使用时,.exec()第一个参数用于错误,第二个参数用于成功数据。