surmon-china/nodepress

model里的pre钩子只有save

jo0ger opened this issue · 3 comments

model里的pre钩子只有save,少了update吧,不然更新的时候没有触发更新update_time的,而且我这边更新update_time是用的this.update({...})方法,直接用this.update_time = ...不起作用

记录在案,感谢反馈

1:实测不能用箭头函数,会导致上下文是空对象,不是预期的数据实例
2:findByIdAndUpdate内部调用的是findOneAndUpdate方法,而中间件允许的几个方法里有findByIdAndUpdate,也就是说你如果用findByIdAndUpdate中间件,那么执行save是不会处理到这个中间件的

announcementSchema.pre('findOneAndUpdate', function(next) {
  this.findOneAndUpdate({}, { update_time: Date.now() });
  next();
});

最终解决,文档说post和pre的上下文对象不同