2015-03-30 34 views

回答

14

Accounts.onLogin(function(){}),设有1级参数的用户。

When it is known which user was attempting to login, the Meteor user object. This will always be present for successful logins.

from docs

所以这应该工作。

Accounts.onLogin(function(user){ 
    console.log(user.user._id) 
}); 

,你会看到,所有的用户文件到服务器控制台,检查此meteorpad的一个例子。

注:此功能只在服务器端检查此Hooks Accounts.onLogin/onLoginFailure should be available on client

+0

是的Ethaan,我得到了整个用户文件。但是,如果我console.log(user._id)我得到未定义。 onLogin功能位于服务器上,而不是客户端上。 – meteorBuzz 2015-03-30 19:33:19

+0

@meteorBuzz我看到了,它很奇怪,因为你得到整个文档,但是当你试图访问它们时,你会得到未定义的,所以让我检查一下它吧。 – Ethaan 2015-03-30 19:41:18

+1

@meteorBuzz console.log(user.user._id)'this is the优胜者 – Ethaan 2015-03-30 19:42:46

3

可你总是可以得到的登录用户通过Meteor.userId()的_id。这也适用于Accounts.onLogin回调内

Accounts.onLogin(function() { 
    console.log(Meteor.userId()); 
}) 
+1

当我尝试它时,这给我一个错误:onLogin回调中的异常:错误:Meteor.userId只能在方法调用中调用。在发布函数中使用this.userId。在Object.Meteor.userId(packages/accounts-base/accounts_server.js:19:1)''' – gb96 2015-09-02 23:13:15

+0

这不起作用。你不能使用Meteor.userId()。 @Ethaan答案是正确的。 – nearpoint 2015-10-27 17:59:23

+0

为什么人们说这不起作用?它似乎工作(除非有最近的流星更新,使其工作) – 2016-01-21 08:21:45