如何在Angular JS Web应用程序中将经过身份验证的用户链接到我的firebase数据库?
据我所知,我必须在每个用户的数据库树中创建一个节点。我在我的数据库树中创建了一个名为“users”的节点。我不明白的是如何让每个用户占用我数据库中“users”节点中的子节点,这样一旦登录,每个用户保存的所有数据都保存在各自的子节点下。
这是我目前的代码:
$scope.saveTeam = function(user){
$scope.history = [];
var uid = user.uid;
var ref2 = firebase.database().ref("users/" + uid + "/week");
ref2.set($scope.history);
};
答案 0 :(得分:0)
您用于注册用户的任何方法都会返回承诺。
例如,考虑使用电子邮件和密码注册用户:
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
}
);
因此,如上所示,您可以在承诺的完整部分中执行将新用户写入数据库的过程。 这可确保仅在用户注册成功时才创建用户节点
所以在您的代码中添加如下
$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()
参数