4

観察

カーソル.observeが流星内でどのように動作するかを理解しようとしましたが、何も見つかりませんでした。 ドキュメントによると

クエリ結果に変更があった場合にコールバックに通知するライブクエリを確立します。

ライブクエリの意味をもっとよく理解したいと思います。

  • オブザーバー関数はどこで実行されますか?Meteorまたはmongoによって?

複数の実行

オブザーバーをサブスクライブするユーザーがいるだけではない場合、クライアントごとに1つのインスタンスが実行され、パフォーマンスと競合状態の問題が発生します。

  • どうすればobserveそれを実装できsingletonますか?すべてに対して実行されているインスタンスは1つだけです。

編集:ここに3番目の質問がありましたが、今は別の質問です:cursor.observeの競合状態を回避する方法は?

4

1 に答える 1

8

現在のところ、サーバー側は次のようにobserve機能します。

  1. クエリに一致するドキュメントのセットを作成します。
  2. クエリを使用してデータベースを定期的にポーリングし、変更の差分を取得して、関連するイベントをコールバックに発行します。
  3. 一致するデータが流星自体によって変更/モンゴに挿入された場合、関連するイベントを発行し、上記のステップ2を短絡します。

同じ引数を持つサブスクライブの呼び出しが共有されることを自動的に保証する計画があります(おそらく次のリリースで)。つまり、基本的にシングルトン部分を自動的に処理します。

確かに自分でこのようなことを成し遂げることはできますが、それは流星チームにとって優先度が高いと思うので、現時点ではおそらく努力する価値はありません。

于 2012-10-29T06:15:31.070 に答える