То, что я пытаюсь сделать sh, - это создать логин пользователя, используя html / javascript с firestore в качестве моего бэкэнд-провайдера. В настоящее время мой код возвращает ошибку
Uncaught (в обещании) TypeError: Невозможно прочитать свойство 'uid' из неопределенного
TypeError: Невозможно прочитать свойство 'uid' из неопределенного
Я понимаю, что get () требует времени для запуска, поэтому я использовал функцию then () как обещание, когда get () работает. На данный момент единственное, что работает, это
const userCredential = await firebase.auth().signInWithEmailAndPassword(data.email, data.password);
, потому что в журнале консоли отображается firebase.auth().onAuthStateChanged()
, но перенаправление на любую страницу, основанную на пользователе (в зависимости от его занятости), не происходит, поскольку uid
не может быть найденным.
вот мой. js код
(function(){//initialize the firebase app
var config = {
};
firebase.initializeApp(config);
var auth = null;
var loginBtn= document.getElementById('btnLogin');
// var user = db.collection("users");
// var db = firebase.firestore();
firebase.auth.Auth.Persistence.SESSION;
//Login
loginBtn.addEventListener('click', async e => {
e.preventDefault();
if( $('#email').val() != '' && $('#password').val() != '' ){
//login the user
var data = {
email: $('#email').val(),
password: $('#password').val()
};
try{
const userCredential = await firebase.auth().signInWithEmailAndPassword(data.email, data.password);
let uid = userCredential.user.uid;
var documents = await firebase.firestore().collection('users').doc(uid);
documents.get().then(function(doc){
if(doc.data['occupation'] != 'Doctor'){
window.location.href = "patientDashboard.php";
}
else {
window.location.href = "doctorDashboard.php";
}
});
}
catch(err) {
console.log("Login Failed!", err);
window.alert("Login Failed!", err);
}
}
});
})();
Надеюсь, я все объяснил, спасибо заранее!