2012-06-18 127 views
7

我正在使用流星。我想知道是否在更新DOM之前以快捷方式进行批量更新。流星批量更新

比如我想更新一些记录,不止一个(一次全部):

Collection.update(id1,{..}) 
Collection.update(id2,{..}) 
Collection.update(id3,{..}) 

的问题是,有3个项目被单独更新。所以当我的情况下DOM被重绘3次而不是一次(所有3个更新记录)。

有没有办法阻止ui更新,直到所有更新?

回答

-1

而不是在服务器上执行它们,这样他们可能被同步完成,使它们不太可能导致客户端上的多个DOM更新。

请参阅first two and last interesting code bits,其中解释了如何保护客户端免受数据库的干扰,以及如何定义服务器上的方法并从客户端调用它们。

+0

我仍然不确定是否它的异步,但它已经更优化这样做 – Akshat

23

Mongo的更新一次可以修改多个文档。只要给它一个匹配多个文档的选择器,并设置multi选项。在你的情况下,这只是一个ID列表,但你可以使用任何选择器。

Collection.update({_id: {$in: [id1, id2, id3]}}, {...}, {multi:true}); 

这将运行一个数据库更新和单个重绘。

+4

假设在上述mongo选择器匹配的每个文档中有一个属性测试,我希望用不同的值更新测试适当性每个文件都可能以某种方式? 我理解你上面的答案的方式是,我可以用固定的静态值设置任何单个字段,并且所有与_id匹配的文档都将受到影响。但我没有固定的价值。 – Vinay