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

Ply*_*ood 27 mongoose

来自Mongoose JS文档:

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

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

muZ*_*uZk 75

@aheckmann在github回复

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

schema.post('save', function () {
    if (this.wasNew) {
        // ...
    }
});
Run Code Online (Sandbox Code Playgroud)

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

  • @jysperm你的评论让我感到困惑,因为这个例子同时使用了`wasNew`和`isNew` ...所以改变了什么? (2认同)

Ply*_*ood 6

编辑:有关Document#isNew的信息,请参见Document#isNew

  • 猫鼬以其出色的文档而闻名。 (5认同)