Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

94
Vistas
Promesa pendiente en MongoDB
let comments = await Comment.find({ post }) .populate({ path: "user", select: "name photoURL role page" }) .sort({ createdAt: -1 }); console.log("comments --", comments); const pages = []; let pagesData = comments.map(async (comment) => { let page = await Pages.find({ user: comment.user._id }); console.log("page", page); pages.push(page); }); console.log("Pages -- ", pagesData);

Tengo este código en el que estoy tratando de obtener documentos de un db. Cuando registro los registros escritos anteriormente, obtengo los resultados esperados para los comments y la page y no para pages o los datos de pagesData .

pagesData registro de datos de páginas me da:

 Pages -- [ Promise { <pending> }, Promise { <pending> }, Promise { <pending> }, Promise { <pending> }, Promise { <pending> }, Promise { <pending> } ]

El registro de páginas me da una matriz vacía como se inicializó, los resultados de la consulta en las páginas no se envían a las pages de la matriz.

Sin embargo, obtengo todos los resultados esperados en los registros de page individuales. ¿Cómo puedo agregar estos resultados a una sola estructura de datos? Cualquier ayuda apreciada.

Gracias por adelantado.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

La función de mapa no promete que necesita usar el método Promise.all y consolar la matriz de páginas.

 const pages = []; let pagesData = comments.map(async (comment) => { let page = await Pages.find({ user: comment.user._id }); console.log("page", page); pages.push(page); }); await Promise.all(pagesData); console.log("Pages -- ", pages);

La solución anterior resolverá el problema de la promesa pendiente, pero este no es un buen enfoque para consultar en la base de datos en un bucle,

Puede probar el siguiente enfoque para seleccionar todas las páginas mediante una sola consulta,

  • mapa para iterar el bucle de comentarios y obtener una matriz de ID de usuario
  • $in para seleccionar todos los usuarios que tienen _id de la matriz
 let pages = await Pages.find({ user: { $in: comments.map((comment) => comment.user._id); } }); console.log("Pages -- ", pages);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda