修改环回3中的ChangeStream响应

时间:2019-01-17 17:22:02

标签: loopbackjs server-sent-events changestream

首先,如果您不熟悉变更流,请阅读this

似乎在使用lb架设应用程序时,会自动为模型创建一个变更流终结点。我已经成功实现了一个变更流,在向我的Statement模型提交新模型实例时,这些变更将实时发送到所有连接的客户端。效果很好。

除了仅发送modelInstance模型的Statement。我还需要对提交该语句的用户有所了解。由于Statement与我的用户模型具有hasOne关系,因此我通常会使用includes过滤器进行查询。但是我不是在这里查询...这不是变更流的工作方式。节点服务器将信息发送到客户端,而无需先查询该信息。

我的问题是,如何挂接Statement模型中的传出变更流,以便可以从用户模块中提取所需的数据?像这样:

module.exports = function(Statement) {

  Statement.hookChangeStream(function(ctx, statementInstance, cb) {
    const myUser = Statement.app.models.myUser
    myUser.findOne({ 'where': { 'id': statementInstance.userId } }, function(err, userInstance) {
      if (err !== undefined && err !== null) cb(err, null);

      // strip sensitive data from user model
      cleanUserInstance = someCleanerFunc(userInstance);

      // add cleaned myUser modelInstance to Statement modelInstance
      statementInstance.user = cleanUserInstance;
      cb(null, true);
    }
  });

}

可以做到吗?如果可以,怎么办?

0 个答案:

没有答案