我正在尝试编写一些代码,用于在我的Firebase应用中创建/插入用户数据(基于网络)。
我想在用户使用他们的电子邮件进行身份验证后执行此操作。密码(该部分工作正常)。
但是我在Firebase数据库中存储用户的ID,用户名,电子邮件,年龄和个人资料图片时遇到了一些问题。
这是我瞄准的数据库结构:
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和用户ID。
这样做的正确方法是什么?我习惯使用SQL,这是我第一次使用noSQL数据库,所以也许我完全错了?
任何帮助解决这个问题都会非常感激。提前谢谢!
答案 0 :(得分:1)
我认为如果你只是调用writeUserData
函数(它被定义,但从未调用过),它应该可以工作。
您可以删除addStore
功能,因为在您写信时会创建位置users/${userId}
。
以下是一个完整的例子。请注意,我删除了writeUserData
函数并且只是内联代码,我还内联了要设置到数据库的变量。
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...");
firebase.database().ref('users/' + userId).set({
username: "JohnDoe",
email: useremail,
age: "50",
profile_picture : "http://zntent.com/wp-content/uploads/2016/03/will-ferrell-film.jpg"
});
}, function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
Console.log("There was an error: " + errorCode + "." + errorMessage);
// ...
});
}