繁体   English   中英

Firebase 解析 Promise

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM