我正在尝试编写一些代码,这些代码将在Firebase应用程序(基于Web)中创建/插入用户数据。
我想在用户使用他们的电子邮件和密码(该部分正常工作)进行身份验证之后执行此操作。
但是我在将用户的ID,用户名,电子邮件,年龄和个人资料图片存储在Firebase数据库中时遇到了一些麻烦。
这是我想要的数据库结构:
MyAppReference
|
|___users
|
|_____UID
|___username
|___email
|___age
|___profile_picture
当用户使用电子邮件和密码注册后生成用户ID(UID)时,我想将其保存为“用户”字段中用户的唯一标识符。然后在他们的UID中,我想存储他们的用户名,电子邮件,年龄和profile_picture。但是我不知道如何在同一段代码中创建父代(UID)和子代。
这是我目前的尝试:
function insertUserDetails() {
var useremail = "[email protected]";
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控制台中,但是在数据库中没有任何痕迹。
这样做的正确方法是什么?我已经习惯了SQL,这是我第一次使用noSQL数据库,所以也许我的事情完全错了?
修复此问题的任何帮助将不胜感激。先感谢您!
我认为,只要您调用该writeUserData
函数(已定义但从未调用过),它应该可以工作。
您可以删除该addStore
函数,因为users/${userId}
将在写入该位置时创建该位置。
下面是一个完整的示例。请注意,我删除了该writeUserData
函数并仅内联了代码,并且还内联了要设置到数据库的变量。
function insertUserDetails() {
var useremail = "[email protected]";
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);
// ...
});
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句