Feathers.js和后台作业,如何触发服务事件(或实时更新客户端)

时间:2017-10-16 15:43:31

标签: feathersjs

稍微了解一下我理解的基于服务和钩子的文档,并且服务具有的事件也有助于在服务器和客户端之间提供实时同步。

只要事情很简单,就像在我理解的文档中一样,基本上生成服务然后使用服务方法添加/保存/更新将触发事件。

我的情况有点不同:

  • API端点不会从表中返回信息,而是根据多个表
  • 返回复杂查询
  • 我需要有后台工作人员对数据库进行操作,可能使用Kue(如果内部没有更好的方法),当一个工人完成工作时,我需要有办法触发API服务,因此它使用新数据更新客户端。

我怎样才能在羽毛中做到这一点?

1 个答案:

答案 0 :(得分:0)

这两种场景都可以通过这样的Feathers来处理:

不必 的羽毛服务必须绑定到表格。您可以像在任何其他框架(控制器)中一样实现custom service。创建聚合不同服务调用的Dashboard服务或使用service.Model访问您正在使用的ORM的情况并不罕见:

class MyService {
  find(params) {
    const userModel = this.app.service('users').Model;
    const invoiceModel = this.app.service('invoices').Model;

    return userModel.doSomething()
      .then(data => invoiceModel.doSomethingElse());
  }

  setup(app, path) {
    this.app = app;
  }
}

后台工作人员也应该使用Feathers API(在Node中可以通过const app = require('./src/app')直接使用应用程序或通过Feathers as the client透明地连接)来完成,这样所有连接的客户端都将自动获得更新。然后应该不需要手动触发事件(这需要注意,例如必须通过任何更改数据的钩子运行原始数据)。