javascript - Meteor:onConnection,检查用户是否登录

标签 javascript meteor server meteor-accounts

我正在使用 onConnection Hook 和一些模板助手来执行一些统计操作。但现在,当我是注册用户时,我不想排除这些操作。 问题是,我无法在 onConnection Hook 中使用 Meteor.user() ,那么如何检查用户是否已登录?

关于代码,没有太多可展示的

Meteor.onConnection(function(conn) {
 if(Meteor.user()) {
  console.log("you are logged in")
 } else {
  console.log("u are not logged in")
 }
});

这不是真实的例子,但它简单地显示了我想要做的事情 错误

err [Error: Meteor.userId can only be invoked in method calls. Use this.userId in publish functions.]

我知道我可以在方法中使用 Meteor.user(),但是如何在 onConnection 中找到用户是否已登录?

最佳答案

出于统计目的,我建议使用出版物。他们有更复杂的 API,使您可以更好地控制您的连接。

Meteor.publish('users.trackPresence', function() {
  // Both this.userId && this.connection are available to be called from here

  this.onStop(function(){
    // user went offline
  });

  this.ready();
});

在客户端上,您可以检查用户是否存在,如果是这种情况,甚至不订阅:

Tracker.autorun(function(){
  if (!Meteor.userId())
    Meteor.subscribe('users.trackPresence');
});

当您从 Tracker.autorun 中订阅时,Meteor 会自动处理取消订阅/重新订阅

在此处了解有关 pubsub api 的更多信息 https://docs.meteor.com/api/pubsub.html

关于javascript - Meteor:onConnection,检查用户是否登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42814310/

相关文章:

javascript - 是否可以在 jQuery 事件中更改 Angular 范围?

java - Chrome 并不总是将表单数据发送到我的(自行实现的)服务器

java - Tomcat 7 未从/home 目录加载图像

javascript - Javascript "if"语句中的奇怪错误

Javascript - 排序字母然后数字

javascript - Node - 从等待结果返回内联中选择一个变量

javascript - 我可以在哪个模板事件中隐藏主模板(Meteor)中的元素?

meteor - 所有模板的事件处理程序?

使用 Autoform 时出现 Meteor Scope 错误

linux - Centos httpd 使用 7.5GB 内存