从 Mongoose 对象获取简单对象到 运行 Underscore 的 `_.difference()` 方法
Getting Simple Objects from Mongoose Objects to Run Underscore's `_.difference()` Method
在我的 MongoDB 后端中,我使用 pre
和 post
挂钩来比较文档的预保存和 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) {});
在我的 MongoDB 后端中,我使用 pre
和 post
挂钩来比较文档的预保存和 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) {});