Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

304
Views
How to wait for promise in a forEach in JavaScript?

I would like to retrieve an array from my mongodb collection, and before sending it back to the client, work with it. My desired outcome would be the following:

  • Get array from collection_A
  • Do the desired work with the array I just got, by having another mongodb query
  • Pass the array back to the client

My current code looks like this:

                db.collection("collection")
                .find()
                .toArray()
                .then((arr) => {
                    arr.forEach(cur => {
                        db.collection("another-collection")
                            .count({key: cur.prop})
                            .then((retrieved) => {
                                cur.prop = retrieved; //The amount of count one live above
                                //This part runs later than the res.success below
                            })
                            .catch((err: any) => {
                                //Handle error
                            });
                    });
                    return arr;
                })
                .then(arr => {
                    res.success(arr);
                })
                .catch((err) => {
                    //Handle error
                });

At the moment, the work I want to do with the retrieved array happens after res.success(), so on the client I will get the original array. Why is that so?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

You can use Promise.all along with Array#map.

.then((arr) => 
    Promise.all(arr.map(cur => 
        db.collection("another-collection")
            .count({
                key: cur.prop
            })
            .then((retrieved) => {
                cur.prop = retrieved; 
                return curr;
            })
            .catch((err: any) => {
                //Handle error
            })
    ))
)
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!