取消订阅流星应用程序中的发布

时间:2016-09-21 18:58:57

标签: meteor unsubscribe

我想知道是否有正确的方法来阻止客户的订阅。

例如,我有2个页面,第一个我订阅客户端到users出版物,第二个我订阅projects出版物。

当客户端从用户页面转到项目页面时,他仍然订阅了用户,尽管他在项目页面上不需要它。

所以我的第一个问题是:它需要内存还是CPU?当客户订阅越来越多的出版物时,他从路线到路线。

第二种:取消订阅的正确方法是什么? 例如,当他进入项目页面时,取消订阅用户出版物。

我看到的一些包就是这样。例如reactive-table

提前谢谢!

1 个答案:

答案 0 :(得分:3)

通常,如果您想停止订阅,请使用Meteor.stop()。从指南中,了解如何stop subscriptions

  

如果您在反应性上下文中有条件地调用Meteor.subscribe()(例如React中的autorun或getMeteorData)或Blaze组件中的this.subscribe(),那么Meteor的反应系统将自动调用this.stop( )在适当的时候为你服务。

通常,您不必停止订阅。它是自动完成的。

- 对于您的第一个问题,是的,取决于应用程序,它可能是CPU密集型的,这就是您希望避免在聊天应用程序中使用多个pub / sub的原因。

- 对于第二个问题,在您的情况下,您需要做的是模板级订阅而不是路由器级别,以便将您需要的数据仅提供给您需要的模板。 See this example了解如何使用Flow Router,同样适用于其他路由器。

Template.blogPost.onCreated(function() {
  var self = this;
  self.autorun(function() {
    var postId = FlowRouter.getParam('postId');
    self.subscribe('singlePost', postId);  
  });
});