如何取消订阅收藏?
我的出版物:如何取消订阅收藏?
Meteor.publish('items', function() {
return Items.find({}, {skip: randomNumber, limit: 100});
});
我申购代码时,点击(在templates.event)按钮
Meteor.subscribe('items');
Items.find().fetch();
然而,问题是,项目不与新的数据刷新发生,但是新数据会附加到旧列表中。我能做些什么来取消订阅旧数据?
When you call Meteor.subscribe
it will return a subscription handle.
您在处理呼叫stop
取消它。
例如,在事件帮手
if (SomeGlobalVar){
SomeGlobalVar.stop();
}
SomeGlobalVar = Meteor.subscribe('items');
The other way is to run the subscription inside Deps.autorun
;它会自动清理旧订阅。
例如,在你的事件处理程序
Session.set('subscribe', true);
其他地方在你的代码:
Deps.autorun(function(){
if (Session.get('subscribe')){
Meteor.subscribe('items');
}
});
如果你打电话Session.set('subsribe', false);
流星将自动取消/清理该订阅items
。
对我来说似乎有点混乱,当你连接到一个被动数据源时,你并没有订阅特定的数据,所以当新的记录被添加到课程中时,它们通过该连接被添加到你的数据中。
如果我理解了你的问题,并且希望新数据完全替换旧数据,我建议你不要在集合周围构建模板,而是围绕缓存版本的数据构建它(它将保存在一个对象并使用Deps进行反应),这样您就可以完全控制显示的数据。
然而,如果有成千上万的项目,这不是一个好的建议,但由于显而易见的原因,这不是一个好的解决方案。 – 2014-09-01 00:04:37
在问题中提供的查询仅限于1K结果,因此我认为我们一次只能处理1K个项目。 – 2014-09-01 09:04:11
在这里你有一个工程的例子:http://meteorpad.com/pad/fwka2h9mAi2vLFysv。只需在订阅之前取消订阅。 – 2014-09-01 06:14:02