我正在使用 Meteor 构建应用程序。每次用户登录我的应用程序时,我都想创建一个新的购物车 ID(作为我可以存储元素的购物车)。但是,每次我在应用程序中打开一个新页面时,都会创建一个新的购物车 ID。这是否意味着每次我单击应用程序中的新页面时应用程序都会“登录”?这是我的代码:
Accounts.onLogin(function(user){
var newCartId = uuid.new()
Meteor.users.update({_id: user.user._id}, {$set: {'profile.cartId': newCartId}})
console.log('just created a new Cart ID at ' + Date());
});
最佳答案
是的,这是真的。
每次您打开一个新页面时,您都没有登录。当 localStorage token 对您进行身份验证时,类似于 cookie 的方式,您将自动登录。当您自动登录时,此 Hook 也会运行。
很难定义用户如何登录。Meteor 的 onLogin 钩子(Hook)会在任何类型的登录方法上触发。
不过,您可以自定义何时希望 Hook 运行:
Accounts.onLogin(function(info) {
if(info.methodName == "createUser") {
console.log("This user logged in by signing up");
}else if(info.type == "password") {
console.log("This user logged in by using his/her password");
}else if(info.type == "resume") {
console.log("This user logged in using a localStorage token");
}
});
所以在这里您可以让事件仅在用户使用他或她的密码登录时触发。甚至在他们注册时。如果用户打开一个使用 localStorage token 注册的新页面,您可以使用它来排除运行 Hook 。
关于javascript - 账号onLogin hook meteor 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30644730/