Accounts.onLogout - 用户注销了什么?

时间:2016-08-09 17:13:32

标签: meteor meteor-accounts

我很高兴添加了Accounts.onLogout()服务器端钩子:http://docs.meteor.com/api/accounts-multi.html#AccountsCommon-onLogout

但是,我似乎无法找到一种方法来访问正在注销的用户。 PR表示onLogout挂钩与onLogin直接类似,但我无法在任何地方找到用户。

Accounts.onLogout(function(user) {
  console.log("onLogout:", user);
  console.log(Meteor.user());
  console.log(this._userId);
  console.log(this.connection);
});

为所有内容输出undefined。

我如何知道哪个用户正在退出?

1 个答案:

答案 0 :(得分:1)

正如您已经发现的那样,似乎没有一种方法可以直接从回调中访问已注销的用户,因为thisundefined并且没有给出任何参数回调。

要解决此问题,我建议您创建一个带有参数的自定义方法:用户ID。您可以在调用Meteor.logout()之前从客户端代码中调用该方法。在该方法中,您可以访问用户ID,并可以从数据库中查找用户并执行您想要的任何操作。

实施例

// On the server
Meteor.methods({
  preLogoutHook: function (userId) {
    check(userId, String);
    // .. do stuff ..
  }
});

// On the client, probably in an event handler of a logout button
Meteor.call('preLogoutHook', Meteor.userId(), (error, result) => {
    if (error) console.log(error);
});
Meteor.logout();