从猫鼬对象中获取简单对象以运行下划线的_.difference()方法

时间:2019-02-08 16:51:53

标签: mongodb mongoose underscore.js

在我的MongoDB后端中,我使用<class 'pandas.core.series.Series'>pre钩子比较文档的保存前和保存后版本,以便在发生某些更改时进行后处理。我还使用下划线的post方法来查找文档的两个版本之间的差异。

但是,由于这些不是简单的对象,而是实际上的Mongoose对象,因此存在各种各样的附加数据,例如:

_.difference()

因此,长话短说,我正在尝试弄清楚如何仅获取对象数据-别无其他,以便 activePaths: StateMachine { paths: [Object], states: [Object], stateNames: [Array], map: [Function] }, pathsToScopes: 将提取已更改的数据。我尝试使用_.difference,但这在我的情况下不起作用。我还尝试在两个文档中调用JSON.parse() Mongoose方法,但这会导致“不是函数”错误。

1 个答案:

答案 0 :(得分:1)

您可以在文档上使用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) {});