[英]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.