Получение простых объектов из объектов Mongoose для запуска метода `_.difference ()` Underscore - PullRequest
0 голосов
/ 08 февраля 2019

В моем бэкэнде MongoDB я использую хуки pre и post для сравнения версий документа перед сохранением и после сохранения, чтобы обрабатывать последующую обработку, когда происходят определенные изменения.Я также использую метод подчеркивания _.difference(), чтобы найти различия между двумя версиями документа.

Однако, поскольку это не простые объекты, а на самом деле объекты Mongoose, в них смешаны всевозможные дополнительные данные, такие как:

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

Итак, короче говоря, яЯ пытаюсь выяснить, как просто получить данные объекта - больше ничего, чтобы _.difference извлек данные, которые были изменены.Я попытался использовать JSON.parse(), но в моем случае это не сработало.Я также пытался вызвать метод lean() Mongoose на моих двух документах, но это вызвало ошибку «не функция».

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете использовать метод 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) {});
...