【问题标题】:Does meteor subscribe overwrite old subscriptions?流星订阅会覆盖旧订阅吗?
【发布时间】:2016-01-01 13:13:43
【问题描述】:

我想知道流星订阅调用是否会覆盖同一集合的先前订阅?

例如如果我有分页并使用类似的东西:

Meteor.subscribe('tasks',start,count);

并调用: Meteor.subscribe('tasks',0,10);

然后前进到下一个订阅的页面

Meteor.subscribe('tasks',10,10);

...meteor 将前 10 个结果保留在内存中还是删除旧内容?

我的最终目标是为用户提供手动订阅整个文档以供以后离线使用的选项,我担心这种做法会干扰我的动态订阅以供在线使用。

【问题讨论】:

    标签: javascript meteor


    【解决方案1】:

    一旦您使用Meteor.subscribe 开始订阅,它将保持活动状态,直到手动停止或用户断开连接(关闭浏览器等)。

    所以对您的问题的简短回答是:不,订阅都将处于活动状态,并且所有重复的文档都将被合并。

    但是,这可能不是您想要的,因为除非您清理订阅,否则它们将继续存在。动态修改订阅参数的常见解决方案是使用autorun。下面是一个模板级 autorun 的示例,我们根据一对会话变量订阅 tasks

    Template.tasks.created = function () {
      var self = this;
      this.autorun(function () {
        var start = Session.get('paginationStart');
        var end = Session.get('paginationEnd');
        self.subscribe('tasks', start, end);
      });
    };
    

    autorun 将根据其反应输入智能地启动和停止之前的订阅。

    有关流星分页的更多详细信息,我建议阅读this post

    【讨论】:

    猜你喜欢
    • 2016-02-17
    • 2012-10-01
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 2014-06-16
    • 2015-05-15
    相关资源
    最近更新 更多