cursor.observe如何工作以及如何避免多个实例运行?

zVi*_*tor 4 mongodb meteor

我试图弄清楚光标 .observe是如何在流星内部运行的,但却一无所获. 文件

建立实时查询,通知回调对查询结果的任何更改.

我想更好地了解实时查询的含义.

  • 我的观察员功能将在哪里执行?通过流星或蒙戈?

多次运行

当我们不仅仅是订阅观察者的用户时,每个客户端都会运行一个实例,从而导致我们遇到性能和竞争条件问题.

  • 我怎样才能实现我observe的感觉singleton呢?只运行一个实例.

编辑:这里有第三个问题,但现在它是一个单独的问题:如何避免在cursor.observe上的竞争条件?

Tom*_*man 8

服务器端,截至目前,observe工作方式如下:

  1. 构造与查询匹配的文档集.
  2. 定期使用查询轮询数据库并对更改进行区分,将相关事件发送到回调.
  3. 当流星本身将匹配数据改变/插入mongo时,发出相关事件,短路步骤#2.

有计划(可能在下一个版本中)自动确保共享具有相同参数的订阅调用.所以基本上自动为你处理单身部分.

当然你可以自己实现这样的目标,但我相信这对流星团队来说是一个高优先级,因此在这一点上可能不值得努力.