Создание учетной записи Firebase пытается установить дополнительную информацию с помощью переменных, а затем получить эту информацию - PullRequest
0 голосов
/ 11 сентября 2018

Итак, на одном документе (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, но предупреждение возвращает undefined при вызове alert . Предупреждение показывает это точно: «Пользователь: [объект объекта] Имя: не определено Фамилия: не определено Школа не определена»

Что я делаю не так? Есть ли другой / лучший способ хранения пользовательских данных с использованием Firebase? Единственные данные, которые я храню для пользователей, - это их имя, фамилия и школа, а также очевидные данные, такие как электронная почта и пароль, потому что это работает.

Если честно, я не знаю, есть ли что-то не так с тем, как я устанавливаю данные, или извлекаю данные, или как тестировать либо.

1 Ответ

0 голосов
/ 11 сентября 2018

Согласно руководствам ,

Вы можете обновить основную информацию профиля пользователя - отображаемое имя пользователя и URL-адрес фотографии профиля - с помощью метода updateProfile.

Таким образом, с помощью updateProfile() можно изменить только значения displayName и photoUrl.Невозможно добавить произвольные поля профиля для пользователя.Вместо этого вы захотите сохранить дополнительную информацию о пользователе в базе данных, например, Cloud Firestore .Если вам нужна дополнительная информация о Cloud Firestore , эта кодовая метка - отличное место для начала.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...