如何获得关于带有帆的mongo集合中的外部更改的通知
How to get notified about external changes in a mongo collection with sails?
我正在开发一个基于mongo和sails的应用程序,并测试sails中的实时更新是如何工作的。
我现在使用的是0.9.16帆,但我也对0.10帆的答案感兴趣。
我希望在相应集合中创建新文档时更新列表。当我通过sails套接字添加文档并发送post消息时,这就起作用了。在这种情况下,我看到其他客户端收到消息,客户端的列表也会更新。
有一个外部服务正在mongo数据库上艰难地写入,因此该集合一直在增长。数据库中由外部服务直接创建的新元素不会通知侦听客户端,因此我必须刷新网页才能显示这些元素。
问题:
- 当数据库创建不是来自帆本身时,关于这些创建的通知应该起作用吗
- 如果是,这是否需要一些特殊配置
- 如果没有,当数据库发生变化时,建议使用什么方法来更新集合的客户端列表
干杯
这个问题很有趣,但并不罕见:Meteor的人也有同样的问题。基本上,如果不观察数据库,你甚至无法横向扩展你的应用程序,因为一个服务器进程不知道另一个服务器程序做了什么数据更改。
因此,一开始他们通过每10秒轮询一次数据库来修补它。:)显然,这不是最好的解决方案,所以他们最终找到了另一个解决方案(也适用于Sails):现在他们正在跟踪MongoDB操作日志,并在相应集合发生变化时触发更新。
也就是说,为了回答您的问题:
- AFAIK,Sails流程不知道对DB进行了任何外部更改
- 所以,没有什么可配置的
- 跟踪外部数据库(MongoDB)更新的一种方法是使用你可以在npm中找到的一个oplog观察者(例如,这个或其中一个,等等)来监听更改并在需要时触发更新
不幸的是,这里没有现成的解决方案,但我希望至少现在你对如何使其工作有了想法。
相关文章:
- 调整窗口大小时,可拖动的对象会出现在容器外部
- HTML表单提交时未执行外部函数
- 通过在Dojo mobile ViewController.openExternalView中动态更改打开同一外部视图的
- 使用html中的外部javascript进行数据验证
- 将变量传递给外部Javascript
- 使用javascript在Flash中加载外部图像
- Firebase2(Firebase.google.com)推送通知-从外部管理
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何从外部页面激活非默认引导选项卡
- 如何在运行时在angular 2中加载外部js脚本
- JavaScript-在手机上不工作的情况下,在外部单击时隐藏元素
- 单击元素外部时进行JQuery
- 我的外部js文件无法加载
- 拆下外部分配器
- 什么'在webpack外部设置中,reactDom和reactDom不同
- 将依赖外部库的UMD模块与browserfy捆绑在一起
- Zendesk app.js示例用于发送外部电子邮件通知或AJAX请求
- 将外部js更改的变量通知主页面
- 通知来自XPcom的外部事件的JavaScript
- 如何获得关于带有帆的mongo集合中的外部更改的通知