将创建的用户链接到firebase Web应用程序中的数据库

时间:2017-05-13 10:13:37

标签: angularjs firebase web-applications firebase-realtime-database firebase-authentication

如何在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);

  };

1 个答案:

答案 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()参数