Firebase帐户创建尝试使用变量设置其他信息,然后获取该信息

问题描述 投票:0回答:1

所以,在一个文档(register.html)上,我有这样的代码:

firebase.auth().createUserWithEmailAndPassword(email, password).catch(function(error) {
                    // Handle Errors here.
                    var errorCode = error.code;
                    var errorMessage = error.message;
                    // [START_EXCLUDE]
                    if (errorCode == 'auth/weak-password') {
                      weakPass.style="color:red;";
                    }

                            else {
                        unexpected.innerHTML=errorMessage;
                    }
                    console.log(error);

//Handle Account Status
    firebase.auth().onAuthStateChanged(user => {

    if(user) {
            var user = firebase.auth().currentUser;
            var firstname = txtFirst.value;
            var lastname = txtLast.value;
            var School = dropdown.value;

            user.updateProfile({
                firstName: firstname,
                lastName: lastname,
                school: School
            }).then(function() {
                alert("User: " + user + " Firstname: " + user.firstName + " Lastname: " + user.lastName + " School: " + user.school);
                redirect("home.html");
            });


            //After successful login, user will be redirected to home.html
    }

    });

事实上,用户确实注册了一个连接到firebase网站的电子邮件和密码,并成功将网站重定向到home.html,我认为它实际上并没有将数据添加到用户“个人资料” 。

我在home.html上有这个代码,试图提取数据:

//Handle Account Status
  firebase.auth().onAuthStateChanged(function(user) {
    if (user) {
      // User is signed in.
      var firstname = user.firstName;
      var lastname = user.lastName;
      var school = user.school;

      alert("User: " + user + " Firstname: " + firstname + " Lastname: " + lastname + " School: " + school);
    } else {
      // User is signed out.
    }

  });

但是,这不起作用。 user的值为true,但在调用警报时,alert会返回undefined。警报完全显示:“用户:[对象对象]名字:未定义姓氏:未定义学校未定义”

我究竟做错了什么?是否有使用firebase存储用户数据的不同/更好的方法?我为用户存储的唯一数据是他们的名字,姓氏和学校,以及明显的电子邮件和密码,因为它可以工作。

说实话,我不知道我设置数据,拉动数据或如何测试数据的方式是否有问题。

javascript firebase authentication account creation
1个回答
0
投票

根据guides

您可以使用updateProfile方法更新用户的基本配置文件信息 - 用户的显示名称和配置文件照片URL。

因此,使用updateProfile()可以改变的唯一值是displayNamephotoUrl。无法向用户添加任意​​配置文件字段。相反,您需要在数据库中存储有关用户的额外信息,例如Cloud Firestore。如果你想了解更多有关Cloud Firestore的信息,这个代码库是一个很好的起点。

© www.soinside.com 2019 - 2024. All rights reserved.