【问题标题】:Meteor batch update流星批量更新
【发布时间】:2012-06-20 15:12:20
【问题描述】:

我正在使用流星。我想知道是否有一种在更新 DOM 之前进行批量更新的速记方法。

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

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

问题是有 3 个项目分别更新。因此,当我的情况下的 DOM 被重绘 3 次而不是一次时(所有 3 条更新记录)。

有没有办法推迟 ui 更新,直到它们全部更新?

【问题讨论】:

    标签: mongodb meteor


    【解决方案1】:

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

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

    【讨论】:

    • 我仍然不确定它是否是异步的,但这样做已经更优化了
    【解决方案2】:

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

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

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

    【讨论】:

    • 假设在与上述 mongo 选择器匹配的每个文档中都有一个属性测试,并且我希望使用每个文档的不同值更新测试属性,这可能以某种方式吗?我理解您上面回答的方式是,我可以 $set 任何具有固定静态值的单个字段,并且所有与 _id 匹配的文档都会受到影响。但我没有固定值。
    猜你喜欢
    • 1970-01-01
    • 2013-10-13
    • 2017-08-26
    • 1970-01-01
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多