skip to Main Content

I’m starting in the world of promises and there is one thing I can’t understand.

I am trying to make a system that returns a document from a Firebase collection by its ID.

For this I use 2 functions

 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;
       
        
    }

The problem is that I don’t know in the second how to resolve the Promise so that this function returns the desired object.

Thanks!!

2

Answers


  1. You should be able to just await the call to the first function:

    const getProduct = async (idProduct)=>{
      let ProductData = await getProductDataById(idProduct);
      // Do something with ProductData?
      return ProductData;      
    }
    

    Of course, if you’re not doing anything with ProductData, then this is equivalent to just calling getProductDataById directly.

    Login or Signup to reply.
  2. I was experiencing the same problem.
    Maybe you’ve already solved it… but here’s my example:

    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) => {...}
    

    Always be careful and analyze very well where to put async/await

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search