在保存中间件

时间:2015-05-04 16:52:49

标签: node.js mongoose static-methods

我有一个静态方法来执行find()并在应用启动时将Campaign数据添加到Redis。

CampaignSchema.statics.activeCampaignsToRedis = function () {
    this
        .find()
        .where('active').equals(true)
  ...
};

我想添加一个帖子保存挂钩,只要添加或修改新的广告系列,就会重新运行静态方法来更新Redis中的数据。

CampaignSchema.post('save', function (next) {
  // call CampaignSchema.statics.activeCampaignsToRedis();
});

1 个答案:

答案 0 :(得分:3)

您的保存后中间件回调会将保存的文档作为其一个参数,而不是下一个函数。从那里,您可以通过其(未记录的)constructor属性访问doc模型。

因此,您可以将中间件功能编写为:

CampaignSchema.post('save', function (doc) {
  doc.constructor.activeCampaignsToRedis();
});