在nodejs中扩展MongoDB的“save”方法

时间:2014-12-13 00:31:00

标签: node.js mongoose cache-control node-mongodb-native

在我们的应用程序中,我们有一个大型文档,它是我们REST api的大部分数据的来源。

为了正确地使REST api的客户端缓存无效,我想跟踪对文档所做的任何修改。我们提出的最好的方法是扩展文档的mongo save命令以发送通知(然后像往常一样保存)。

问题是,在实践中如何实际做到这一点?有没有直接的方式来扩展mongo"节省"方法,或者我们应该在我们使用的模型上创建一个自定义方法(即" saveAndNotify")(如果可以,我会避免)?

[编辑] 所以原则上,我希望这样做,但我的问题不是破坏父保存功能();

mySchema.methods.save = function() {
  // notify some stuff
  ...
  //call mongo save function
  return this.super.save();
};

1 个答案:

答案 0 :(得分:0)

猴子修补核心mongo对象是一个坏主意,但事实证明mogoose有一个middleware概念可以处理这个问题:

var schema = new Schema(..);
schema.pre('save', function (next) {
  // do stuff
  next();
});