Angular JS Web アプリで認証済みユーザーを Firebase データベースにリンクするにはどうすればよいですか?
ユーザーごとにデータベース ツリーにノードを作成する必要があることを理解しています。このために、データベース ツリーに「users」というノードを作成しました。私が理解していないのは、各ユーザーがデータベースの「ユーザー」ノードのサブノードを占有して、ログインすると、各ユーザーが保存するすべてのデータがそれぞれのサブノードの下に保存されるようにする方法です。
これは現時点での私のコードです:
$scope.saveTeam = function(user){
$scope.history = [];
var uid = user.uid;
var ref2 = firebase.database().ref("users/" + uid + "/week");
ref2.set($scope.history);
};
ユーザーのサインアップにどの方法を使用しても、Promise が返されます。
たとえば、電子メールとパスワードを使用してユーザーをサインアップすることを検討してください。
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
}
);
したがって、上記のように、promise の満たされた部分で、新しいユーザーをデータベースに書き込むプロセスを実行できます。これにより、ユーザーのサインアップが成功した場合にのみユーザー ノードが作成されます。
だからあなたのコードにこのように追加します
$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()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加