Meteor中的发布顶部回调如何工作?
下面是Meteor中的发布顶部回调如何工作?,meteor,iron-router,meteor-publications,Meteor,Iron Router,Meteor Publications,下面是onStop()函数的作用: 注册一个回调函数以在订阅停止时运行 现在,我尝试在我的出版物中使用此onStop()函数跟踪离开页面的用户 我希望它能直接工作,因为订阅是在模板路由控制器中调用的,而我发布的集合在页面离开后就不可用。但我在这里是因为即使发布在客户端上不再处于活动状态,也不会触发onStop()。我不确定它是如何工作的,因此以下是问题: 如果用户离开所连接的路线,是否会触发出版物onStop() 如果没有,是否有内置的Meteor机制来停止未使用的酒吧/酒吧?如果是,它是如何
onStop()
函数的作用:
注册一个回调函数以在订阅停止时运行
现在,我尝试在我的出版物中使用此onStop()
函数跟踪离开页面的用户
我希望它能直接工作,因为订阅是在模板路由控制器中调用的,而我发布的集合在页面离开后就不可用。但我在这里是因为即使发布在客户端上不再处于活动状态,也不会触发onStop()
。我不确定它是如何工作的,因此以下是问题:
- 如果用户离开所连接的路线,是否会触发出版物
onStop()
- 如果没有,是否有内置的Meteor机制来停止未使用的酒吧/酒吧?如果是,它是如何工作的?是超时吗
- 是否需要使用
或游标.observe()
来使用/触发游标.observeChanges()
回调onStop()
- 为什么当我关闭浏览器或选项卡,或从当前用户帐户注销时,
回调没有触发onStop()
onStop()
,因为我必须将发布查询移动到onStop()
之后(因为查询位于返回的后面)
然而,由于我的问题可能会引起一些人的兴趣,以下是答案:
如果用户离开它所连接的路由,是否会触发发布在顶部()
对。无论用户转到网站的另一条路线、关闭浏览器选项卡或电池耗尽,都是如此
是否需要使用游标.observe()或
Cursor.observeChanges()是否使用/触发onStop()回调
没有
为什么在关闭浏览器或浏览器时未触发onStop()回调
选项卡,或从我的当前用户帐户注销
事实上,在所有这些情况下都会触发这种情况。以下是如何使用onStop()
查看基本出版物,当用户未填写相关表单并在未提交的情况下离开页面时,我使用该出版物来处理上载文件的删除:
Meteor.publish("files", function(sessionId) {
var self = this;
// Here I clean all the files I need to remove because the user has
// not submitted the current form.
self.onStop(function () {
console.log (sessionId + " is cleaning...");
cleanFiles(sessionId)
});
// I look for files related to the current upload session only
if(Users.isInRoles(this.userId, ["user"])) {
return Files.find({"session_id":sessionId, "owner":this.userId}, {});
}
//and I make my publication available in case the if failed
return self.ready();
});
我想你应该看看msavin:mongol
来跟踪你的出版物。这是客户端有史以来最有用的东西之一。我用了一段时间,但由于在我观察到的收集反馈中出现了一种奇怪的行为,我决定把它扔掉。事实上,我刚刚意识到它没有触发onStop()
,因为我忘记了在发布查询之前删除返回值。我会尽量找到我剩下的问题的答案,并把它们贴在这里,除非有人以前这样做过。这是一个很好的解决方案:我重新安装了msavin:mongol
,它确实非常方便。谢谢@Kyll!