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

154
Visualizações
Hacer que las consultas pobladas con mongoose lean () devuelvan POJO sin ningún objeto reutilizado

Si uso Mongoose para ejecutar una consulta en un esquema que tiene una referencia a otro modelo (en este caso, un modelo de BlogPost con una propiedad author que hace referencia a otro modelo Author).

 let posts = await BlogPost.find({}, "title author").populate("author","name bio").lean()

Al pasar lean(), se supone que debo recuperar un POJO así:

 [{ "_id": "602828eaff09bca9c3af2dbb", "author": { "_id": "602433bd98d380443ef9aeb7", "name": "Matt", "bio": "matt is cool" }, "title": "Hello World", "__v": 0 }, { "_id": "6048b8cb0200e51b4f2486c8", "author": { "_id": "602433bd98d380443ef9aeb7", "name": "Matt", "bio": "matt is cool" }, "title": "Another Blog post", "__v": 0 }]

Sin embargo, si modifico por ejemplo

publicaciones[0].autor.nombre = "Prueba"

luego TODAS las publicaciones con este autor en la matriz se modifican:

 [{ "_id": "602828eaff09bca9c3af2dbb", "author": { "_id": "602433bd98d380443ef9aeb7", "name": "Test", "bio": "matt is cool" }, "title": "Hello World", "__v": 0 }, { "_id": "6048b8cb0200e51b4f2486c8", "author": { "_id": "602433bd98d380443ef9aeb7", "name": "Test", "bio": "matt is cool" }, "title": "Another Blog post", "__v": 0 }]

Si, en cambio, solo quisiera afectar el primer objeto de la matriz, ¿qué debo hacer?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

La función de llenado en Mongoosehttps://mongoosejs.com/docs/api/query.html#query_Query-populate tiene una opción clone:true

[options.clone=false] «boolean» Cuando haces BlogPost.find().populate('author'), las publicaciones de blog con el mismo autor compartirán 1 copia de un documento de autor. Habilite esta opción para hacer que Mongoose clone los documentos completos antes de asignarlos.

Así que el código correcto sería algo como

 let posts = await BlogPost.find({}, "title author").populate({path:"author", fields:"name bio", clone:true}).lean()

Gracias a @buithienquyet en los comentarios por los consejos.

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