取决于 mongoose pre('update') 中的查询更改文档

Depends on query change document in mongoose pre('update')

每次使用 {active: true} 更新模型时,我都想更改 lastActiveAt 字段。我有这样的东西:

MySchema.pre('update', function(next) {
  if (this._compiledUpdate.$set.active) {
    this.update({}, {lastActiveAt: new Date()});
  }
  next();
});

// ...

MyModel.update({/* ... */}, {active: true});

它可以工作,但我不喜欢 _compiledUpdate 中的下划线。是否有推荐的方法来访问 pre('update') 中间件中的查询?

您可以尝试this.getUpdate()方法获取更新查询:

MySchema.pre('update', function(next) {
  if (this.getUpdate().$set.active) {
    this.update({}, {lastActiveAt: new Date()});
  }
  next();
});

参考:https://github.com/Automattic/mongoose/issues/2812