При создании пользователя с электронной почтой, как добавить элементы в БД в Firebase в Javascript - PullRequest
0 голосов
/ 04 июня 2018

Так что я новичок в использовании Firebase, и я смотрел документацию Firebase, но я не нашел, как сделать следующее:

Пользователь вводит следующие данные: имя пользователя, адрес электронной почты, пароль, Подтвердите Пароль.Когда я вызываю «createUserWithEmailAndPassword», если он работает, я хочу одновременно создавать записи в БД в Firebase.Я попытался написать следующую строку:

firebase.auth().createUserWithEmailAndPassword(userEmailCreate, userPasswordCreate).then(function(){
  //do what I want
}).catch(function (error) {})

Но это не работает.Что я делаю неправильно?Или у вас есть какие-либо предложения относительно того, как добавить дополнительные элементы в запись «Пользователь», используя uid, созданный методом аутентификации?

    function createUser() {
  //instance of database Firebase
  var database = firebase.database();
  //Get inputs from user
  var userUsername = document.getElementById("usernameCreation_Field").value;
  var userEmailCreate = document.getElementById("emailCreation_field").value;
  var userPasswordCreate = document.getElementById("passwordCreation_field").value;
  var userPassword2Create = document.getElementById("passwordCreation2_field").value;

  if (userPasswordCreate == userPassword2Create && userUsername.length > 0) {
    //If passwords match try to create user
    firebase.auth().createUserWithEmailAndPassword(userEmailCreate, userPasswordCreate).catch(function (error) {
      // Handle Errors here when creating account
      var errorCode = error.code;
      var errorMessage = error.message;
      document.getElementById('createSuccess').style.display = 'block';
      document.getElementById('createSuccess').innerHTML = errorMessage;
    });
    //Passwords don't match
  } else if(userUsername.length == 0){
    document.getElementById('createSuccess').innerHTML = 'Username must be filled!';
    document.getElementById('createSuccess').style.display = 'block';
  } else {
    document.getElementById('createSuccess').style.display = 'block';
    document.getElementById('createSuccess').innerHTML = 'Passwords don\'t match!';
  }

}

//Add new user to database
function setUserData(userId, username, email){
  firebase.database().ref('users/' + userId).set({
    username: name,
    email: email,
    profile_picture : imageUrl,
    topScore : topScore
  });
}

Заранее спасибо за потраченное время!

1 Ответ

0 голосов
/ 04 июня 2018

Ваш код нигде не вызывает setUserData, поэтому это определенно объясняет, почему ничего не записывается в базу данных.

Вы, вероятно, хотите позвонить, если из then из createUser...:

firebase.auth().createUserWithEmailAndPassword(userEmailCreate, userPasswordCreate).then(function(userCredential) {
  setUserdata(userCredential.user.uid, userUsername, userEmailCreate);
}).catch(function (error) {
  // Handle Errors here when creating account
  var errorCode = error.code;
  var errorMessage = error.message;
  document.getElementById('createSuccess').style.display = 'block';
  document.getElementById('createSuccess').innerHTML = errorMessage;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...