流星服务器端批量数据库更改

时间:2013-10-07 11:00:48

标签: meteor

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

谢谢, 一体化组织

1 个答案:

答案 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
     });

然后,您的批量更新需要以某种方式与此发布功能进行交互,使其在更新完成后停止并重新初始化观察者。