取决于猫鼬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

最新更新