在不重新运行的情况下在自动运行中更新 collection (Meteor.JS)
Update collection inside autorun without rerun (Meteor.JS)
我正在寻找最佳实践,我们如何更新 collection inside tracker authorun;
例如,我想更新 collection 中的观看次数。但我想确定我的订阅已准备就绪,并且我有 object 工作;
例如在 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();
}
});
这段代码将进入无限循环,因为我们注释掉的代码会发生变化 object。在这种情况下最好怎么做?非常感谢!
好的,我找到了一个很好的方法(可能不是)。
我们可以使用 nonreactive Tracker function();
更新集合
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();
})
}
});
我想就是这样。也许有人会提供更好的?
如果没有更好的offer版本,我会在一天后关闭问题
我正在寻找最佳实践,我们如何更新 collection inside tracker authorun;
例如,我想更新 collection 中的观看次数。但我想确定我的订阅已准备就绪,并且我有 object 工作;
例如在 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();
}
});
这段代码将进入无限循环,因为我们注释掉的代码会发生变化 object。在这种情况下最好怎么做?非常感谢!
好的,我找到了一个很好的方法(可能不是)。 我们可以使用 nonreactive Tracker function();
更新集合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();
})
}
});
我想就是这样。也许有人会提供更好的? 如果没有更好的offer版本,我会在一天后关闭问题