Добавление пользовательских данных в firestore после Firebase Auth - PullRequest
2 голосов
/ 27 сентября 2019

Я пытаюсь добавить данные пользователя в Cloud Firestore после использования Firestore Auth, когда создается новый пользователь.

$("#signup_btn").click(function () {
    var firstname = document.getElementById("firstname").value;
    var lastname = document.getElementById("lastname").value;
    var email = document.getElementById("email_signup").value;
    var password = document.getElementById("password_signup").value;

    firebase.auth().createUserWithEmailAndPassword(email, password).then(cred=>{
        this.createNewUserData(firstname,lastname,email);
    }).catch(error =>{
        var user = firebase.auth().currentUser;

        user.delete();
        var errorMessage = error.message;

        window.alert("Error: "+ errorMessage);
    });
});


function createNewUserData(firstname, lastname, email){
    db.collection("users").add({
        firstname: firstname,
        lastname: lastname,
        email: email
    })
        .then(function (docRef) {
            console.log("Document written with ID: ", docRef.id);
        })
        .catch(function (error) {
            console.error("Error adding document: ", error);
        });
}

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

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Попробуйте и скажите мне, работает ли он или нет

firebase.auth().signInWithEmailAndPassword(email, password)
   .then(function(firebaseUser) {
        db.collection("users").add({
            firstname: firstname,
            lastname: lastname,
            email: email
        })
        .then(function (docRef) {
            console.log("Document written with ID: ", docRef.id);
        })
        .catch(function (error) {
            console.error("Error adding document: ", error);
        });
   })
  .catch(function(error) {
       // Error Handling
  });
0 голосов
/ 27 сентября 2019

Вы не можете вызвать другую функцию, используя this.createNewUserData.Таким образом, вам нужно вызвать createNewUserData(firstname,lastname,email); из блока then createUserWithEmailAndPassword.

В настоящее время причина того, что он не добавляет никаких пользовательских данных в базу данных пожарного хранилища, заключается в том, что функция createNewUserDataне называется.Поэтому, как только эта функция будет вызвана, вы получите как минимум вызов в firestore для добавления этого пользователя.

...