Изменение значений модели после загрузки в Mongoose

В моей модели мангуста у меня есть stats, зависящие от времени. Моя идея - добавить middleware, чтобы изменить эти параметры сразу после загрузки модели.

К сожалению, документация на post -Hooks немного отсутствует в ясности. Кажется, я могу использовать такой крючок:

schema.post('init', function(doc) {
    doc.foo = 'bar';
    return doc;
});

В их только примеры входят console.log -выходы. Он никоим образом не объясняет, нужно ли возвращать doc или если изменение пост-крюка вообще невозможно (поскольку оно не является асинхронным, для сложных идей может быть мало пользы).

Если pre on 'init' не является правильным способом автоматического обновления модели при загрузке, то что?

Ответ 1

Так мы обновляем модели при загрузке, работая асинхронно:

schema.pre('init', function(next, data) {
  data.property = data.property || 'someDefault';
  next();
});

Pre-init является особенным, другие крючки имеют немного отличающуюся подпись, например pre-save:

schema.pre('save', function(next) {
  this.accessed_ts = Date.now();
  next();
});