首页 文章

用户数据未正确创建或插入Firebase数据库

提问于
浏览
1

我正在尝试编写一些代码来创建/插入用户数据到我的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 回答

  • 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);
            // ...
        });
    }
    

相关问题