簡體   English   中英

無法將新用戶堅持到Firebase數據庫

[英]Can't Persist New User to Firebase Database

我一直在閱讀無數的教程,而且根本無法獲得任何數據顯示在firebase數據庫中。 我正在嘗試獲得這種結構

"my-app-name": {
    "users": {
        "uid-of-user": {
            "email": "them@them.com",
            "todoitems": {
            }
        }
    }
}

首先,我不確定如何獲得該結構。 在可視編輯器的"my-app-name" ,我已將"users" = "" 我不確定這是否是將users建立為空對象的方法。 或者,也許我根本不應該與可視編輯器打交道? 這是我的createNewUser控制器,應將新用戶持久保存到數據庫中:

function LoginController($scope, Auth, $state, $location, $firebaseObject, $firebase) {
    $scope.createNewUser = createNewUser;
    $scope.signupComplete = "";

    function createNewUser() {
        var ref = new Firebase("https://sizzling-torch-655.firebaseio.com/");

        //CREATE USER
        Auth.$createUser({
            email: $scope.email,
            password: $scope.password
        }).then(function(userData) {

            //THIS SHOULD BE PERSISTING IT TO THE DATABASE
            var user = $firebaseObject(ref.child('users').child(userData.uid));
            user.$loaded().then(function() {
                var newUser = {
                    emailAddress: $scope.email,
                };
                user.$ref.$set(newUser);
            })
            // $location.path("/home");
        }).catch(function(error) {
            $scope.responseMessage = error;
        });
    };
};

應當指出,我還沒有在firebase數據庫中創建users對象。 任何幫助都非常感謝。 非常感謝你。

澄清度

Auth.$creatUser為:

app.factory("Auth", ["$firebaseAuth", function($firebaseAuth) {
    return $firebaseAuth(ref);
}]);

我已經成功創建了用戶,並看到它們顯示在Firebase儀表板的“登錄/用戶”選項卡中。 我無法將它們存儲到數據庫中。

userData.uid是從$createUser函數的then部分返回的userData對象。

編輯2這些是我的安全和規則。 這會影響我將用戶數據寫入數據庫嗎? 這將是一個待辦事項應用程序。 用戶應該只能訪問自己的數據。

{
  "rules": {
    // public read access
    ".read": true,

    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

Firebase身份驗證不會自動將用戶信息存儲在數據庫中。 如果要將此類信息存儲在數據庫中,則必須自己編寫必要的代碼。

從您的摘要中:

//THIS SHOULD BE PERSISTING IT TO THE DATABASE
var user = $firebaseObject(ref.child('users').child(userData.uid));

此代碼不會在數據庫中的任何信息存儲無論是。 而是嘗試從數據庫讀取用戶的數據。 但是由於您首先沒有在此處編寫它,所以讀取將無法完成任何操作,並且then()將永遠不會執行。

解決方案是在用戶進行身份驗證時將必要的用戶數據寫入數據庫。

var user = $firebaseObject(ref.child('users').child(userData.uid));
var newUser = {
    emailAddress: $scope.email,
};
user.$ref.$set(newUser);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM