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

188
Views
¿Hay alguna manera de trabajar con Javascript Promise en la siguiente función?

Así que tengo el siguiente código en javascript

 async function getFoodData (req, res) { const ids = req.body.data; const food = []; ids.map((id) => { Food.findOne({ _id: id },(err, result) => { if(result){ food.push(result) } }) }) return res.status(200).json({ Food: food }) }

Los identificadores son un montón de identificadores de Mongo recibidos en el cuerpo. Esta función busca datos y, al devolver los resultados, los agrega a la matriz de alimentos. Sin embargo, la declaración de devolución se ejecuta primero y obtengo una matriz vacía. Creo que mi problema se resolverá usando Promises, pero soy nuevo en el concepto y, por lo tanto, ¿alguien puede ayudarme?

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

0

Puede utilizar await y Promise.all para lograrlo.

Promise.all() toma una serie de promesas. Ahora con la declaración, await Promise.all(foodPromises); estás esperando que todas las promesas se resuelvan.

Después de eso, puede filtrar la matriz de resultados solo para valores truthy , lo que estaba haciendo en su código.

 async function getFoodData (req, res) { const ids = req.body.data; const food = []; const foodPromises = ids.map((id) => Food.findOne({ _id: id })); await Promise.all(foodPromises); let returnData = foodPromises.filter(x => x); return res.status(200).json({ Food: food }) }

.map() generalmente se usa cuando desea transformar una matriz en otra. Si solo desea ejecutar un ciclo, use for / forEach() .

about 4 years ago · Juan Pablo Isaza Report

0

Después de algunas investigaciones, también encontré otra solución.

 async function getFoodData (req, res) { const ids = req.body.data; const food = []; async function foodData(id) { const food = await Food.findOne({ _id: id }) if(food) return food } for( let i = 0; i < ids.length; i++ ) { const result = await foodData(ids[i]) if(result) food.push(result) } return res.status(200).json({ Food: food }) }

Crear una función y luego usar await mientras el bucle hizo el trabajo por mí

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!