Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

181
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda