model里的pre钩子只有save
jo0ger opened this issue · 3 comments
jo0ger commented
model里的pre钩子只有save,少了update吧,不然更新的时候没有触发更新update_time的,而且我这边更新update_time是用的this.update({...})方法,直接用this.update_time = ...不起作用
surmon-china commented
记录在案,感谢反馈
surmon-china commented
surmon-china commented
1:实测不能用箭头函数,会导致上下文是空对象,不是预期的数据实例
2:findByIdAndUpdate内部调用的是findOneAndUpdate方法,而中间件允许的几个方法里有findByIdAndUpdate,也就是说你如果用findByIdAndUpdate中间件,那么执行save是不会处理到这个中间件的
announcementSchema.pre('findOneAndUpdate', function(next) {
this.findOneAndUpdate({}, { update_time: Date.now() });
next();
});
最终解决,文档说post和pre的上下文对象不同