node.js - 在保存后中间件中使用静态方法

标签 node.js mongoose static-methods

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

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

我想添加一个保存后 Hook ,每当添加或修改新的营销事件时,该 Hook 都会重新运行静态方法来更新 Redis 中的数据。

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

最佳答案

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

因此您可以将中间件函数编写为:

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

关于node.js - 在保存后中间件中使用静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30035535/

相关文章:

php - T_PAAMAYIM_NEKUDOTAYIM 错误调用静态方法

node.js - Microsoft Azure Functions 和 Node - 我是 Mac 用户。如何在 Azure 门户中上传/安装 Node 包?

node.js - Mongoose:如何对整个查询进行切片?

javascript - 检测 Mongoose 事件的语法是什么?

javascript - 表单验证和 Node JS - 避免厄运金字塔

c# - 何时将整个类声明为静态

java - 主要 Activity 未正确引用外部 java 类

mysql - 解析带保留字的 MySql 查询

node.js - 如何绕过/避免 API 帖子上的 crsf?

javascript - 使用 Mongoose 添加不在模式中的字段