我想在使用{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