gpt4 book ai didi

javascript - 如何获得有关带有风 sails 的 mongo 集合的外部更改的通知?

转载 作者:行者123 更新时间:2023-11-30 12:44:29 25 4
gpt4 key购买 nike

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

我现在使用的是 sails 0.9.16,但我也对有关 sails 0.10 的答案很感兴趣。

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

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

问题:

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

干杯

最佳答案

非常有趣的问题,虽然不是一个不寻常的问题:来自 Meteor 的人有同样的问题。基本上,如果不观察数据库,您甚至无法水平扩展您的应用程序,因为一个服务器进程不知道另一个服务器进程进行了哪些数据更改。

因此,起初他们通过每 10 秒轮询一次数据库来修补它。 :) 显然,这不是最佳解决方案,因此他们最终采用了另一种解决方案(也适用于 Sails):现在他们正在跟踪 MongoDB oplog并在相应集合发生变化时触发更新。

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

  • 据我所知,Sails 进程不知道对数据库所做的任何外部更改;
  • 因此,无需配置;
  • 一种跟踪外部数据库 (MongoDB) 更新的方法是使用您可以在 npm 中找到的一个 oplog 观察器(例如 thisthese 之一,等等)来监听更改并在任何时候触发更新有需要。

遗憾的是,此处没有现成的解决方案,但我希望至少现在您已经知道如何让它发挥作用。

关于javascript - 如何获得有关带有风 sails 的 mongo 集合的外部更改的通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23083913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com