Определите, является ли документ новым или существует в mongoose Post middleware "save"?

Из документации Mongoose JS:

schema.post('save', function (doc) {
  console.log('%s has been saved', doc._id);
})

Есть ли способ определить, является ли это первоначальным сохранением или сохранением существующего документа (обновления)?

Ответ 1

@aheckmann ответить в github

schema.pre('save', function (next) {
    this.wasNew = this.isNew;
    next();
});

schema.post('save', function () {
    if (this.wasNew) {
        // ...
    }
});

isNew - это ключ, используемый внутренним isNew мангуста. Сохранение этого значения в документе было wasNew в wasNew предварительного сохранения, позволяя крюку сохранения сообщения узнать, был ли это существующий документ или недавно созданный. Кроме того, wasNew не передается в документ, если вы специально не добавили его в схему.

Ответ 2

Изменение: см. Документ # isNew для получения информации о документе # isNew

Ответ 3

schema.post('save')

Больше не распознает события обновления. Таким образом, можно просто сделать следующее:

schema.post('save', function () {
    console.log('New object has been created.');
});