我很高兴添加了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。
我如何知道哪个用户正在退出?
答案 0 :(得分:1)
正如您已经发现的那样,似乎没有一种方法可以直接从回调中访问已注销的用户,因为this
是undefined
并且没有给出任何参数回调。
要解决此问题,我建议您创建一个带有参数的自定义方法:用户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();