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?