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

124
Vistas
Cómo mapear los resultados de una consulta agregada de MongoDB en React

Tengo una consulta agregada de MongoDB que usa dos búsquedas. Los datos se recuperan correctamente y se emiten como esperaría cuando los registre en la consola. Sin embargo, pasé malditas horas tratando de acceder a las matrices y objetos anidados, sin suerte hasta ahora y necesito ayuda, por favor.

Esta es mi consulta:

 const pipeline = [ { '$lookup': { 'from': 'posts', 'localField': 'likedThing', 'foreignField': 'id', 'as': 'likedPost' } }, { '$lookup': { 'from': 'users', 'localField': 'userId', 'foreignField': 'id', 'as': 'userData' } }, { '$match': { 'userId': userId } } ] const postdata = await db.collection('likes').aggregate(pipeline).toArray();

Si consolamos.log(postdata):

 [ { _id: '0_m5wSs6WGuAtrfmQuHJI', likedThing: '617ba5d6df45df5616becb21', userId: 'GYmLSp0fL9dTuJvEuJVL0vsBYnX2', likedPost: [ [Object] ], userData: [ [Object] ] }, { _id: 'Xs6GakQ_FVIbYUhtN_-e8', likedThing: '617ba277df45df5616becb20', userId: 'GYmLSp0fL9dTuJvEuJVL0vsBYnX2', likedPost: [ [Object] ], userData: [ [Object] ] }]

Luego registro la matriz/objeto likePost => console.log('likedPost: ',postdata[0].likedPost) que me da:

 likedPost: [ { _id: new ObjectId("617ba5d6df45df5616becb21"), userId: 'i3PYKSLvAcfEd1JdNSEh7qk8NJx1', post: 'some post.', } ]

Paso 'postdata' a un componente para mapearlo:

 <Feed postdata={postdata}/>

Y en el componente Feed, trato de acceder al valor 'post' en la matriz/objeto 'likedPost' anidado y no puedo. Dada la salida de los registros de la consola, me parece que para acceder al valor de publicación, debo hacer lo siguiente:

 {postdata.map((postdata, i) => ( <Card key={i} post={postdata.likedPost[0].post} ... /> ))}

Pero obtengo 'No se pueden leer las propiedades de undefined (leyendo 'publicación')' aunque este registro de la consola genera la publicación:

 console.log('likedPost.post: ',postdata[0].likedPost[0].post)

Creo que tiene algo que ver con que likePost sea una matriz, de ahí el [0] anterior, que contiene un objeto. ¿Cómo accedo al valor clave de 'publicación' dentro de la matriz/objeto likePost en mi componente Feed, por favor?

about 4 years ago · Juan Pablo Isaza
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