4

观察

我试图弄清楚cursor .observe如何在流星内运行,但一无所获。 文档

建立一个实时查询,通知回调查询结果的任何更改。

我想更好地理解实时查询的含义。

  • 我的观察者函数将在哪里执行?通过 Meteor 还是通过 mongo?

多次运行

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

  • 我怎样才能实现observe它就像一个singleton?只有一个实例为所有人运行。

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

4

1 回答 1

8

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

  1. 构造与查询匹配的文档集。
  2. 定期使用查询轮询数据库并获取更改的差异,将相关事件发送到回调。
  3. 当匹配数据被流星本身更改/插入到 mongo 中时,发出相关事件,将上面的步骤 #2 短路。

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

当然你可以自己实现这样的事情,但我相信这是流星团队的首要任务,所以现在可能不值得付出努力。

于 2012-10-29T06:15:31.070 回答