我可以将 Feathers 用于使用从外部源更新的数据的实时站点吗?

Can I use Feathers for a real-time site that uses data updated from external sources?

the docs 中声明服务仅在服务方法修改数据时发出事件。在我见过的所有示例中都是这种情况,客户端从浏览器本身修改数据,并在其他客户端(如聊天网络应用程序)中自动更新。但是,如果我的数据在 Feathers 之外被外部修改怎么办?我能否使用 Feathers 以便在所有客户端中更新数据?

在我的特定情况下,我的数据实际上存储在 MongoDB 数据库中,该数据库会在外部自动更新。我希望我的 Web 应用程序使用 MongoDB Change Streams 来监听 MongoDB 数据库上的更改(我已经知道如何执行此操作),然后我希望 Feathers 负责向我的所有客户端发送更新实时。

在示例聊天应用程序中,这相当于拥有一个机器人,它也直接将消息写入 Feathers 之外的数据库,并且这些消息也应该实时广播给客户端。

我的用例适合 Feathers 吗?关于我应该如何处理它的任何提示?

已完成 feathers-rethinkdb here. Something similar could be done for MongoDB but there are several challenges discussed in this issue.

的 ChangeFeed 观察

如果您的 MongoDB collection 仅在外部更新,您还可以像这样创建一个简单的直通服务:

app.use('/feed/messages', {
  async create(data) {
    return data;
  },

  async remove(id) {
    return { id };
  },

  async update(id, data) {
    return data;
  },

  async patch(id, data) {
    return data;
  }
});

然后由 changefeed 观察器调用,并将自动负责通过其事件更新所有客户端。