在不重新运行的情况下更新autorun内的集合(Meteor.JS)

时间:2016-08-21 12:08:30

标签: meteor meteor-blaze flow-router

我试图找到最好的实践,我们如何更新跟踪器中的收集;

例如,我想更新我的集合中的视图计数。但我想确保我的订阅准备就绪,我有工作的对象;

例如在onCreated部分:

 var self = this;
    self.autorun(function() {
        var topicId = FlowRouter.getParam('_id');
        self.subscribe('Topic', topicId);
        if(self.subscriptionsReady()){
          //  var topic = Topic.findOne(topicId);
          //  topic.upViews();
        }
    });

此代码将进入无限循环,因为我们注释掉的代码将更改对象。在这种情况下如何做到最好?非常感谢你!

1 个答案:

答案 0 :(得分:0)

好的,我找到了一个很好的方式(可能不是)。 我们可以使用非反应性跟踪器功能();

更新集合
var self = this;
self.autorun(function() {
    var topicId = FlowRouter.getParam('_id');
    self.subscribe('Topic', topicId);
    if(self.subscriptionsReady()){
      Tracker.nonreactive(function(){
        var topic = Topic.findOne(topicId);
        topic.upViews();
      })
  }
});

我认为就是这样。也许有人会提供更好的? 如果没有优惠版本更好,我会在一天内结束这个问题