从 Mongoose 对象获取简单对象到 运行 Underscore 的 `_.difference()` 方法

Getting Simple Objects from Mongoose Objects to Run Underscore's `_.difference()` Method

在我的 MongoDB 后端中,我使用 prepost 挂钩来比较文档的预保存和 post-保存版本,以便处理post-发生某些变化时的处理。我还使用下划线的 _.difference() 方法来查找文档的两个版本之间的差异。

但是,因为这些不是简单的对象,而是实际上的 Mongoose 对象,所以混合了各种附加数据 -- 例如:

 activePaths: 
 StateMachine {
   paths: [Object],
   states: [Object],
   stateNames: [Array],
   map: [Function] },
pathsToScopes: 

所以,长话短说,我试图弄清楚如何只获取对象数据 - 仅此而已,以便 _.difference 将提取已更改的数据。我尝试使用 JSON.parse() 但这对我来说不起作用。我还尝试在我的两个文档上调用 lean() Mongoose 方法,但这导致了 "not a function" 错误。

您可以对文档使用 toObject() 方法将其转换为常规对象。

.lean() 方法只能像这样预先查询调用:

// passing options (in this case return the raw js objects, not mongoose documents by passing `lean`
Adventure.findById(id, 'name', { lean: true }, function (err, doc) {});

// same as above
Adventure.findById(id, 'name').lean().exec(function (err, doc) {});