我想知道一个meteor subscribe调用是否会覆盖同一个集合的先前订阅?
E.g。如果我有分页并使用类似的东西:
Meteor.subscribe('任务',启动计数);
并致电: Meteor.subscribe('任务',0,10);
然后前进到订阅
的下一页Meteor.subscribe('任务',10,10);
...流星会将前10个结果保留在内存中还是删除旧内容?
我的最终目标是为用户提供手动订阅整个文档以供以后离线使用的选项,我担心这种做法会影响我在线使用的动态订阅。
答案 0 :(得分:2)
使用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。