Firebase onAuthStateChanged () пропускающий код - PullRequest
0 голосов
/ 04 марта 2019

Я работаю над функцией регистрации приложений с использованием Firebase Authentication & Firestore.В данный момент, когда я создаю пользователя, я хочу также создать файл в моем Firestore.Однако моя onAuthStateChanged() функция просто пропускает эту операцию.

firebase.auth().onAuthStateChanged(function(user) {
       
    //User is signed in.
    if (user) {

        console.log("This happened.");

        //Create the Users document in the Firestore Database.
        firestore.collection("Users").doc(email).set({
            UserEmail: email,
            UserRole: role
        }).then(function() {
            console.log("Document successfully written!");
        }).catch(function(error) {
            console.error("Error writing document: " + error);
        });

        console.log("This also happened.");

        //Redirect user to the dashboard for their role.
        if(role === "Customer") window.location.replace("customer.html");
        else if (role === "Manager") window.location.replace("manager.html");
        else if (role === "Deliverer") window.location.replace("deliverer.html");
        else console.log("The value of role is not an accepted value: " + role + ".");

    }

});

Запустив это в браузере, я вижу как "Это случилось".и "Это тоже случилось".консольные выходы и не получают других консольных выходов или ошибок.Он также завершает перенаправления внизу оператора if.У меня было много проблем с этой функцией в этом файле, так же как и в других, поэтому любая помощь будет принята с благодарностью!Спасибо!

1 Ответ

0 голосов
/ 04 марта 2019

Любой код, которому требуется состояние входа пользователя, должен находиться внутри обратного вызова onAuthStateChanged.Вы уже сделали это, поэтому вы на полпути.

Любой код, который должен выполняться после успешной записи данных в базу данных, должен находиться внутри обратного вызова then().Итак:

firebase.auth().onAuthStateChanged(function(user) {

    //User is signed in.
    if (user) {
        //Create the Users document in the Firestore Database.
        firestore.collection("Users").doc(email).set({
            UserEmail: email,
            UserRole: role
        }).then(function() {
            console.log("Document successfully written!");

            //Redirect user to the dashboard for their role.
            if(role === "Customer") window.location.replace("customer.html");
            else if (role === "Manager") window.location.replace("manager.html");
            else if (role === "Deliverer") window.location.replace("deliverer.html");
            else console.log("The value of role is not an accepted value: " + role + ".");
            else console.log("The value of role is not an accepted value: " + role + ".");
        }).catch(function(error) {
            console.error("Error writing document: " + error);
        });    
    }

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