I have got a function in an API library that calls firestore and gets data back. This part works fine:
export const getUserByReferrerId = async id => {
  let doc = await firestore
    .collection(FIRESTORE_COLLECTIONS.USERS)
    .where('grsfId', '==', id)  
    .get()  
    .then(querySnapshot => {
      if (!querySnapshot.empty) {
        console.log ("we found a doc");
        // use only the first document, but there could be more
        const snapshot = querySnapshot.docs[0];
        console.log ("snapshot", snapshot.id);
        return snapshot.id  // uid of the user
      }
    });
}
I am calling this library from a component. I have another function that runs on a button click. I cannot figure out how to get the value from the async api call.
I have tried this - a promise appears when I console.log the return:
testCreditFunction = (id) => {
    let uid = getUserByReferrerId(id).then(doc => { 
        console.log("uid1", doc);    
    });
}
I have also tried this - log shows null for uid.
testCreditFunction = (id) => {
    let uid = '';
    
    (async () => {
        uid = await getUserByReferrerId(id);
        console.log ("uid in the function", uid);
    })();
}
I have seen this question asked a few times and I have tried several of the answers and none are working for me. The odd thing is that I have done this same thing in other areas and I cannot figure out what the difference is.
 
     
     
    