在Post保存中间软件中使用静态方法



我有一种静态方法来执行find()并在应用程序启动时将广告系列数据添加到redis。

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

我想添加一个帖子保存挂钩,该挂钩将在添加或修改新广告系列时重新运行静态方法以更新REDIS中的数据。

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

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

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

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

最新更新