在Firebase Web应用程序中将创建的用户链接到数据库 [英] linking created users to database in firebase web app
问题描述
如何在Angular JS网络应用程序中将经过身份验证的用户链接到我的Firebase数据库?
How do I link the authenticated users to my firebase database in my Angular JS web app?
我知道我必须在数据库树中为每个用户创建一个节点.为此,我在数据库树中创建了一个名为用户"的节点.我不了解的是如何让每个用户占据数据库的用户"节点中的一个子节点,这样一来,一旦登录,每个用户保存的所有数据都将保存在其各自的子节点下.
I understand that I would have to create a node in my database tree for each user. I have created a node in my database tree called "users" for this. What I do not understand is how to get each user to occupy a sub-node in my "users" node in my database such that once logged in, all the data each user saves is saved under their respective sub-nodes.
这是我目前的代码:
$scope.saveTeam = function(user){
$scope.history = [];
var uid = user.uid;
var ref2 = firebase.database().ref("users/" + uid + "/week");
ref2.set($scope.history);
};
推荐答案
您用来注册用户的任何方法都会返回Promise.
Which ever method you are using to signup users has a promise returned .
例如,考虑使用电子邮件和密码注册用户:
For example consider signing up users with email and password:
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
}
);
因此,您可以按照上述承诺的完整部分执行将新用户写入数据库的过程. 这样可以确保仅在用户注册成功后才创建用户节点
So you can do the process of writing a new user to database in ths promise's fullfilled part as shown above. This ensures that a user node is created only if user sign up was successful
因此请在代码中添加这样的
$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;
});
}
};
您没有在then()
这篇关于在Firebase Web应用程序中将创建的用户链接到数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!