我即将在我们的 DDP 服务器 ( https://github.com/cortexlang/web ) 中构建一个功能,允许用户订阅给定文档的历史值窗口。对历史值的简单订阅可能如下所示:
connection.subscribe("MyCollection", {history:{from_last:0, to_last:10}})
MyCollection
这将返回数组中集合中每个文档的最后 10 个样本。例如,假设MyCollection
包含一个具有单个数值的文档,则上述订阅的结果可能是:
[0, 2, 5, 3, 5, 6, 2, 1, 5, 5]
这些窗口可能非常大。因此,在添加新值时发送整个数组将是浪费的。相反,如果我只能将新值推送给客户端并推出旧值,那就太好了。
例如,假设我的文档更新为新值“3”。我的数组现在应该如下所示:
[3, 0, 2, 5, 3, 5, 6, 2, 1, 5]
在这里,我可以再次发送整个数组。但是,如果我只能发送“3”并删除“5”,效率会高得多。
我注意到 DDPcleared
在消息中有一个字段changed
允许 DDP 清除文档中的字段,但我无法从文档中弄清楚(https://github.com/meteor/meteor/blob/devel/packages/ ddp/DDP.md ) 如何从数组中删除元素。