[英]Firebase login promise doesn't resolve until I tap anywhere on the screen
[英]Firebase resolve Promise
我从承诺的世界开始,有一件事我无法理解。
我正在尝试创建一个系统,该系统通过其 ID 从 Firebase 集合返回文档。
为此,我使用 2 个功能
const getProductDataById = async(idProduct)=> {
const docSnap = await getDoc(doc(db, "products", idProduct));
if (docSnap.exists()) {
return docSnap.data();
}
else {
console.log("No such document!");
}
}
const getProduct = (idProduct)=>{
let ProductDataPromise = getProductDataById (idProduct);
//I don't know how resolve Promise
return ProductData;
}
问题是我不知道第二个如何解决 Promise 以便这个 function 返回所需的 object。
谢谢!!
您应该能够await
对第一个函数的调用:
const getProduct = async (idProduct)=>{
let ProductData = await getProductDataById(idProduct);
// Do something with ProductData?
return ProductData;
}
当然,如果你没有对ProductData
做任何事情,那么这相当于直接调用getProductDataById
。
我遇到了同样的问题。 也许你已经解决了......但这是我的例子:
async function login({email, password}: RegisterAndLoginData) {
await signInWithEmailAndPassword(auth, email, password)
.then(===>async<===(data) => {
const uidDocUsers = data.user.uid;
const docRef = doc(db, "users", uidDocUsers);
//returns only array with user data
const getNameUser ===>await<=== getDoc(docRef)
.then((data) => {
===>return data.data().name<=== //I just wanted a specific data, name
})
console.log("Document data:", getNameUser);
// console return: Document data: "Bianca :D"
})
.catch((error) => {...}
始终要小心并很好地分析将 async/await 放在哪里
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.