在我们的应用程序中,我们有一个大型文档,它是我们REST api的大部分数据的来源。
为了正确地使REST api的客户端缓存无效,我想跟踪对文档所做的任何修改。我们提出的最好的方法是扩展文档的mongo save命令以发送通知(然后像往常一样保存)。
问题是,在实践中如何实际做到这一点?有没有直接的方式来扩展mongo"节省"方法,或者我们应该在我们使用的模型上创建一个自定义方法(即" saveAndNotify")(如果可以,我会避免)?
[编辑] 所以原则上,我希望这样做,但我的问题不是破坏父保存功能();
mySchema.methods.save = function() {
// notify some stuff
...
//call mongo save function
return this.super.save();
};
答案 0 :(得分:0)
猴子修补核心mongo对象是一个坏主意,但事实证明mogoose有一个middleware概念可以处理这个问题:
var schema = new Schema(..);
schema.pre('save', function (next) {
// do stuff
next();
});