Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 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();
});