我正在尝试编写一些代码来创建/插入用户数据到我的Firebase应用程序(基于Web) .
我希望在用户使用他们的电子邮件和密码进行身份验证后(该部分正常工作)执行此操作 .
但是我在Firebase数据库中存储用户的ID,用户名,电子邮件,年龄和 Profiles 图片时遇到了一些麻烦 .
这是我的目标数据库结构:
MyAppReference
|
|___users
|
|_____UID
|___username
|___email
|___age
|___profile_picture
当用户使用他们的电子邮件和密码注册后生成用户ID(UID)时,我想将其保存为“用户”字段中用户的唯一标识符 . 然后在他们的UID中我想存储他们的用户名,电子邮件,年龄和profile_picture . 但我不知道如何在同一段代码中创建父(UID)和子代 .
这是我目前的尝试:
function insertUserDetails() {
var useremail = "johndoe@gmail.com";
var userpassword = document.getElementById("passwordfield").innerHTML;
firebase.auth().createUserWithEmailAndPassword(useremail, userpassword).then(function(user) {
console.log("User is authenticated, attempting to enter the user data now...");
// Define variables for sending to database:
var username = "JohnDoe";
var userId = user.uid;
var age = "50";
var profile_picture = "http://zntent.com/wp-content/uploads/2016/03/will-ferrell-film.jpg";
function writeUserData(userId, username, useremail, age, profile_picture) {
// Attempting to create the parent "UID" (child of "users") here:
function addStore(){
var rootRef = firebase.database().ref();
var storesRef = rootRef.child('MyAppReference/users');
var newStoreRef = storesRef.push();
newStoreRef.set({
"UID": userId,
});
}
// Attempting to create/insert user data under that user's UID:
firebase.database().ref('users/' + userId).set({
username: username,
email: email,
age: age,
profile_picture : profile_picture
});
}
}, function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
Console.log("There was an error: " + errorCode + "." + errorMessage);
// ...
});
}
这不起作用,但我在测试时没有在控制台中收到任何错误 . 用户正在进行身份验证,其用户名和用户ID显示在Firebase控制台中,但数据库中没有这些用户ID .
这样做的正确方法是什么?我已经习惯了SQL,这是我第一次使用noSQL数据库,所以也许我的事情完全错了?
任何帮助解决这个问题将非常感激 . 先感谢您!
1 回答
我认为如果你只是调用
writeUserData
函数(它是已定义的,但从未被调用过),它应该可以工作 .您可以删除
addStore
函数,因为在您写入时将创建位置users/${userId}
.以下是一个完整的例子 . 请注意,我删除了
writeUserData
函数并且只是内联代码,我还内联了要设置到数据库的变量 .