如何获得关于带有帆的mongo集合中的外部更改的通知

How to get notified about external changes in a mongo collection with sails?

本文关键字:外部 通知 集合 mongo 于带 何获得      更新时间:2023-09-26

我正在开发一个基于mongo和sails的应用程序,并测试sails中的实时更新是如何工作的。

我现在使用的是0.9.16帆,但我也对0.10帆的答案感兴趣。

我希望在相应集合中创建新文档时更新列表。当我通过sails套接字添加文档并发送post消息时,这就起作用了。在这种情况下,我看到其他客户端收到消息,客户端的列表也会更新。

有一个外部服务正在mongo数据库上艰难地写入,因此该集合一直在增长。数据库中由外部服务直接创建的新元素不会通知侦听客户端,因此我必须刷新网页才能显示这些元素。

问题:

  • 当数据库创建不是来自帆本身时,关于这些创建的通知应该起作用吗
  • 如果是,这是否需要一些特殊配置
  • 如果没有,当数据库发生变化时,建议使用什么方法来更新集合的客户端列表

干杯

这个问题很有趣,但并不罕见:Meteor的人也有同样的问题。基本上,如果不观察数据库,你甚至无法横向扩展你的应用程序,因为一个服务器进程不知道另一个服务器程序做了什么数据更改。

因此,一开始他们通过每10秒轮询一次数据库来修补它。:)显然,这不是最好的解决方案,所以他们最终找到了另一个解决方案(也适用于Sails):现在他们正在跟踪MongoDB操作日志,并在相应集合发生变化时触发更新。

也就是说,为了回答您的问题:

  • AFAIK,Sails流程不知道对DB进行了任何外部更改
  • 所以,没有什么可配置的
  • 跟踪外部数据库(MongoDB)更新的一种方法是使用你可以在npm中找到的一个oplog观察者(例如,这个或其中一个,等等)来监听更改并在需要时触发更新

不幸的是,这里没有现成的解决方案,但我希望至少现在你对如何使其工作有了想法。