如何通过帆来获取有关mongo集合外部变化的通知?

时间:2014-04-15 12:34:56

标签: javascript mongodb sails.js

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

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

我希望在相应的集合中创建新文档时更新列表。这通过sails套接字添加文档,发送帖子消息时有效。在这种情况下,我看到其他客户端收到一条消息,并且客户端的列表已更新。

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

问题:

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

干杯

1 个答案:

答案 0 :(得分:3)

非常有趣的问题,虽然不是一个不寻常的问题:来自Meteor的人有同样的问题。基本上,在不看DB的情况下,您甚至无法横向扩展应用程序,因为一个服务器进程将不知道另一个服务器进行了哪些数据更改。

所以,起初他们通过每隔10秒轮询数据库来修补它。 :)显然,它不是最好的解决方案,所以他们最终得到了另一个解决方案(也可以用于Sails):现在他们正在拖尾MongoDB oplog并在发生任何时候发布更新。更改相应的集合。

那就是说,回答你的问题:

  • AFAIK,Sails流程不知道对数据库进行的任何外部更改;
  • 所以,无需配置;
  • 跟踪外部数据库(MongoDB)更新的方法是使用您可以在npm中找到的其中一个操作日志记录器(例如thisthese之一等)来监听更改并在需要时触发更新。

不幸的是,这里没有现成的解决方案,但我希望至少现在你知道如何让它发挥作用。