确定doc是新的还是存在于mongoose Post中间件的'save'中?

时间:2013-06-13 23:45:10

标签: mongoose

来自Mongoose JS文档:

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

有没有办法确定这是原始保存还是保存现有文档(更新)?

3 个答案:

答案 0 :(得分:72)

@aheckmann reply at github

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

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

isNew是mongoose内部使用的密钥。将该值保存到预保存挂钩中的文档wasNew允许post保存挂钩知道这是现有文档还是新创建的文档。此外,除非您专门将其添加到架构中,否则wasNew不会提交到文档。

答案 1 :(得分:5)

编辑:有关Document#isNew

的信息,请参阅Document#isNew

答案 2 :(得分:-6)

schema.post('save')

不再识别更新事件。所以不妨只做以下事情:

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