我在角度应用中使用angularfire作为后端,但在提取刚刚创建的最后一个帐户的用户ID 时,我需要帮助。
以下是来自" login和auth"的图片。数据库中的部分,这是用户ID所在的位置。
这是使用用户通过注册表单输入的电子邮件和密码创建新用户的功能。 (user
是一个来自验证函数的对象,它在此之前运行。)
$scope.registerNewUser = function(user) {
var ref = new Firebase("https://pie-shop.firebaseio.com/");
ref.createUser({
email : user.email,
password : user.password
}, function(error) {
if (error === null) {
$('#error-message').show().html('Success!').css({color: 'limegreen'});
}
else {
$('#error-message').show()
.html('Something went wrong when trying to create your account, please try again later')
.css({color: 'red'});
}
});
},
$scope.storeUserInfo = function(user, userID) {
var newUser = new Firebase('https://pie-shop.firebaseio.com/' + userID);
}
所以我需要做的是,最好在function(error)
if语句中获取新创建的帐户的用户ID,并以用户ID作为参数调用storeUserInfo
函数,以便我可以用它来存储用户输入的其他信息。
只需使用$push
将信息存储在数据库中,就不允许我将用户ID与key
相匹配,以获取相应的信息,因为Firebase会生成唯一键将数据推送到数据库时。 (或者即使使用push也有一种聪明的方法吗?如果是这样的话,请告诉我。)
答案 0 :(得分:3)
来自createUser
上的Firebase docs:
onComplete 功能
创建用户帐户时将调用的回调函数。失败时,第一个参数将是一个表示失败的Error对象,具有机器可读的代码属性。成功时,第一个参数将为null,第二个参数将是包含新创建用户属性的对象,包括uid 。
(强调我的)
所以,这样做:
var ref = new Firebase("https://pie-shop.firebaseio.com/");
ref.createUser({
email : user.email,
password : user.password
}, function(error, user) {
if (error === null) {
console.log(user);
}
else {
// deal with error
}
});
答案 1 :(得分:0)
在此tutorial(部分:使用服务验证用户)中,您将执行此操作。您注册用户并立即登录。然后将用户对象存储在$scope.user
中。您可以使用$scope.user.userId
(或console.log来获取正确的值)从firebase获取用户ID。希望能帮助到你。顺便说一句:学习角度和火力基础的好教程。