0

我想知道是否有适当的方法来停止客户的订阅。

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

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

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

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

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

先感谢您!

4

1 回答 1

3

一般来说,如果你想停止订阅,你可以使用 Meteor.stop() 来完成。从指南中,关于如何停止订阅

如果您在响应式上下文(例如自动运行或 React 中的 getMeteorData)或通过 Blaze 组件中的 this.subscribe() 有条件地调用 Meteor.subscribe(),则 Meteor 的响应式系统将自动为您调用 this.stop()在适当的时候。

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

-对于您的第一个问题,是的,取决于应用程序,它可能会占用大量 CPU,这就是为什么您要避免在聊天应用程序中出现多个 pub/sub,例如。

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

Template.blogPost.onCreated(function() {
  var self = this;
  self.autorun(function() {
    var postId = FlowRouter.getParam('postId');
    self.subscribe('singlePost', postId);  
  });
});
于 2016-09-21T19:06:57.820 回答