meteor中有没有办法在服务器端对已发布的集合进行批量更改?...比如更新/插入数百或数千条记录而不是逐个发送给所有订阅者?
我定期提取第三方数据,只想将所有更新或插入一次性收集作为一次批量更新,以便所有客户端都将收到它作为一个更改包而不是数千个迷你更新。在我的应用程序中,逐个执行此操作会产生很大的瓶颈。
如果流星没有这个atm的支持那么我应该直接对mongo进行更新,让meteor在下一次mongo民意调查中选择它吗?
// imagine myChanges array with 1000 items
myChanges.forEach(function(change){
// this will trigger the sync with clients immediately... 1000 times
// currently this will practically hang my server
// i want to gather the changes here instead
MyCollection.update({_id: change.docId}, change);
});
// and trigger the sync here instead
谢谢, 一体化组织
答案 0 :(得分:0)
根据您的应用程序的复杂程度或您拥有的发布次数,可以通过滚动您自己的发布功能来实现。
即。而不是
Meteor.publish("myCollection", function() {
return myCollection.find(); } );
创建自己的发布/光标并添加钩子。
Meteor.publish("myCollection", function() {
globalObserver = myCollection.find().observe({
added: function(item) {
publication.added(item);
}
// And So on
});
然后,您的批量更新需要以某种方式与此发布功能进行交互,使其在更新完成后停止并重新初始化观察者。