我正在编写一个软件,通过DDP连接到Meteor服务器来读取数据.
我面临的问题是如何区分添加到集合中的新文档和获取已有文档的通知.
当我第一次连接到服务器时,我会收到一系列添加的消息来填充clientside集合.我不知道如何区分这些消息,以及稍后出现的消息,表明实时添加了新文档.当DDP客户端需要重新连接到服务器时,这会变得更糟,此时所有当前文档再次作为添加的消息发送.
解决方法
我花了一些时间才真正意识到,但这正是07000的设计目标.请阅读“另外,发布功能可以…”向下部分,并且应该非常清楚如何仅为真正的新文档发送添加的消息.或者提供一个简单的例子:
服务器和客户端:
MyData = new Meteor.Collection("mydata");
客户:
Meteor.subscribe('myPub',myFilter);
服务器:
Meteor.publish('myPub',function(filter) { var self = this; var initializing = true; var handle = MyData.find(filter).observeChanges({ added: function (id,fields) { if (!initializing) self.added("mydata",id,fields); },changed: function(id,fields) { self.changed("mydata",removed: function (id) { self.removed("mydata",id); } }); initializing = false; self.ready(); self.onStop(function () { handle.stop(); // v. important to stop the observer when the subscription is stopped to avoid it running forever! }); });
UPDATE
这是如此根本我实际上写了一个关于它的blog post.