0

I have a list of companies and i want to run loop and fetch data from firestore. The problem is the data is fetched after the loop is completed even though i am using await

const date = new Date();
var prevDay=new Date();
var daysrepeated=[];
prevDay.setDate(date.getDate()-1);
var currentYear=prevDay.getFullYear().toString();
var currentMonth=(prevDay.getMonth()+1).toString();
var dateToday=prevDay.getDate().toString().padStart(2, '0').concat("-",currentMonth,"-",currentYear);
var companyList=["company1","Company"];
for(var i=0; i<companyList.length;i++){
 
        var userRef=await database.collection("Company").doc(companyList[i]).collection("users").get();
        userRef.docs.forEach(async snapshot=>{
          var userCasualLeaves=snapshot.data()['CasualLeaves'];

//The problem is here docRef is not awaiting
         var docRef=await database.collection("Company").doc(companyList[i]).collection("users").doc(snapshot.data()["Email"]).collection("Year").doc(currentYear).collection("Dashboard").doc(currentMonth).collection("Leave").doc("data")
         .get();
          var leaveApproved=docRef.data()['leaveApproved'];
          var halfDayApproved=docRef.data()['halfDayApproved'];
          var finalCasualLeaveCalculaytion=parseInt(userCasualLeaves)-(parseInt(leaveApproved)+(parseInt(halfDayApproved/2)));
          yearlyCasualLeave=finalCasualLeaveCalculaytion;

      });

    }

The loop is completed before the data is fetched from firebase

Frank van Puffelen
  • 565,676
  • 79
  • 828
  • 807

0 Answers0