Я предполагаю, что ваш код содержится внутри другой функции. Тогда вы не можете возвращать «синхронно» из функции после того, как вы использовали Promise. Решение должно заключаться в том, что ваша исходная функция также работает асинхронно и также возвращает обещание.
Например:
function getData() {
return new Promise((resolve, reject) => {
firebase
.firestore()
.collection("users")
.doc(firebase.auth().currentUser.email)
.get()
.then(function(doc) {
if (doc.exists) {
resolve(doc.data().fullName); // <== Pay attention to this line, you resolve rather than return
}
})
.catch(function(error) {
console.log("Error getting document:", error);
reject(error);
});
});
}
Затем следует выполнить асинхронный вызов вашей функции, например:
getData().then((data) => {
// Rest of your code
}).catch((error) => {
// An error occured
});
//Rest of the code (after pulling data) is NOT here, it's inside the `then` part../