如何将经过身份验证的用户链接到我的 Angular JS Web 应用程序中的 firebase 数据库?
我知道我必须在我的数据库树中为每个用户创建一个节点。为此,我在数据库树中创建了一个名为“用户”的节点。我不明白的是如何让每个用户在我的数据库中的“用户”节点中占据一个子节点,这样一旦登录,每个用户保存的所有数据都保存在各自的子节点下。
这是我目前的代码:
$scope.saveTeam = function(user){
$scope.history = [];
var uid = user.uid;
var ref2 = firebase.database().ref("users/" + uid + "/week");
ref2.set($scope.history);
};
您用于注册用户的任何方法都有返回的承诺。
例如,考虑使用电子邮件和密码注册用户:
firebase.auth().createUserWithEmailAndPassword(username, password).then(
(user) =>{
let usersRef = firebase.database().ref("users");
//child is created under users node with a user's user id as child name
usersRef.child(user.uid).set({
email: user.email,
userName: username,
displayPicUrl: 'any url.'
});
}, error => {
//handle errors here
}
);
因此,您可以在 Promise 的 fullfill 部分执行将新用户写入数据库的过程,如上所示。这确保只有在用户注册成功时才创建用户节点
所以在你的代码中添加这样
$scope.signUp = function (){
var username = $scope.user.email;
var password = $scope.user.password;
if(username && password){
var auth = $firebaseAuth();
auth.$createUserWithEmailAndPassword(username, password).then(function(user){
console.log("User Successfully Created");
let usersRef = firebase.database().ref("users");
//child is created under users node with a user's user id as child name
usersRef.child(user.uid).set({
email: user.email,
userName: username,
displayPicUrl: 'any url.'
});
$location.path('/home');
}).catch(function(error){
$scope.errMsg = true;
$scope.errorMessage = error.message;
});
}
};
你没有传入user
参数then()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句