DDP サーバー ( https://github.com/cortexlang/web ) に、ユーザーが特定のドキュメントの履歴値のウィンドウをサブスクライブできる機能を構築しようとしています。履歴値の単純なサブスクリプションは次のようになります。
connection.subscribe("MyCollection", {history:{from_last:0, to_last:10}})
これにより、コレクション内の各ドキュメントの最新の 10 個のサンプルがMyCollection
配列で返されます。たとえばMyCollection
、単一の数値を持つ 1 つのドキュメントが含まれているとします。上記のサブスクリプションの結果は次のようになります。
[0, 2, 5, 3, 5, 6, 2, 1, 5, 5]
これらのウィンドウは、非常に大きくなる可能性があります。したがって、新しい値が追加されたときに配列全体を送信するのは無駄です。代わりに、新しい値だけをクライアントにプッシュし、古い値をプッシュできたらいいのにと思います。
たとえば、ドキュメントが新しい値「3」で更新されたとします。私の配列は次のようになります。
[3, 0, 2, 5, 3, 5, 6, 2, 1, 5]
ここで、配列全体を再度送信することもできました。ただし、「3」のみを送信し、「5」を削除できれば、はるかに効率的です。
cleared
DDP には、DDP がドキュメント内のフィールドをクリアできるようにするフィールドがメッセージにあることに気付きchanged
ましたが、ドキュメントからはまだわかりません ( https://github.com/meteor/meteor/blob/devel/packages/ ddp/DDP.md ) 配列から要素を削除する方法。