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

Unsubscribe from publication in meteor app

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

例如,我有 2 个页面,第一个我为客户订阅 users 发布,第二个我订阅 projects 发布。

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

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

第二个:退订的正确方法是什么?? 例如,当他转到项目页面时,取消订阅用户发布。

我看到的一些软件包可以做到这一点。例如 reactive-table.

提前致谢!

通常,如果您想停止订阅,可以使用 Meteor.stop() 来完成。从指南中,关于如何 stop subscriptions:

if you call Meteor.subscribe() conditionally inside a reactive context (such as an autorun, or getMeteorData in React) or via this.subscribe() in a Blaze component, then Meteor’s reactive system will automatically call this.stop() for you at the appropriate time.

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

-对于您的第一个问题,是的,根据应用程序,它可能 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);  
  });
});