Feathers.js 和后台作业,如何触发服务事件(或实时更新客户端)
Feathers.js and background jobs, how to trigger service event (or realtime update clients)
稍微浏览了一下 feathers 文档,我了解到它是基于服务和挂钩的,并且服务具有的事件也有助于在服务器和客户端之间提供实时同步。
只要事情很简单,就像我理解的文档一样,基本上生成服务然后 adding/saving/updating 使用服务方法将触发事件。
我的情况有点不同:
- API 端点不 return 来自 table 的信息,而是基于多个 tables
的复杂查询
- 我需要有后台工作人员对数据库进行操作,可能使用 Kue(如果没有更好的方式进入 feathers),当工作人员完成工作时,我需要有一种方法来触发 API 服务,以便它使用新数据更新客户端。
如何在羽毛中做到这一点?
这两种情况都可以像这样使用 Feathers 处理:
Feathers 服务不需要 必须绑定到 table。您可以像在任何其他框架(控制器)中一样实现 custom service。创建聚合不同服务调用或使用 service.Model
直接访问您正在使用的 ORM 的 Dashboard 服务并不少见:
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 透明连接来完成)以便所有连接的客户端将自动获得更新。那么应该不需要手动触发事件(这伴随着警告,比如还必须通过任何更改数据的挂钩 运行 你的原始数据)。
稍微浏览了一下 feathers 文档,我了解到它是基于服务和挂钩的,并且服务具有的事件也有助于在服务器和客户端之间提供实时同步。
只要事情很简单,就像我理解的文档一样,基本上生成服务然后 adding/saving/updating 使用服务方法将触发事件。
我的情况有点不同:
- API 端点不 return 来自 table 的信息,而是基于多个 tables 的复杂查询
- 我需要有后台工作人员对数据库进行操作,可能使用 Kue(如果没有更好的方式进入 feathers),当工作人员完成工作时,我需要有一种方法来触发 API 服务,以便它使用新数据更新客户端。
如何在羽毛中做到这一点?
这两种情况都可以像这样使用 Feathers 处理:
Feathers 服务不需要 必须绑定到 table。您可以像在任何其他框架(控制器)中一样实现 custom service。创建聚合不同服务调用或使用 service.Model
直接访问您正在使用的 ORM 的 Dashboard 服务并不少见:
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 透明连接来完成)以便所有连接的客户端将自动获得更新。那么应该不需要手动触发事件(这伴随着警告,比如还必须通过任何更改数据的挂钩 运行 你的原始数据)。