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

383
Vistas
No se puede llenar la matriz de objetos

EDITAR mongoose.model añadido.

Soy bastante nuevo en mongodb y mongoose. No puedo completar libros para autores en mongoose. Alguien me puede ayudar con eso? Aquí está mi código. Eliminé campos innecesarios

 const authorSchema = mongoose.Schema({ _id:{ type: String, required: true, unique: true, trim: true }, name: { type: String, required: true, trim: true }, books: [{ type: String, ref: "Book" }] }, {_id:false}) const Author = mongoose.model('Author', authorSchema) module.exports = {Author}

Y el esquema de mis libros se ve de la siguiente manera

 const bookSchema = mongoose.Schema({ _id:{ type:String, required:true, unique:true, trim: true }, name: { type: String, required: true, trim: true, unique: true }, description:{ type: String, trim: true, default: 'No description specified' }, datePublished: { type: Date, trim: true, default: '01/01/2001' }, author:{ type: String, ref: 'Author', required: true } }, {_id:false}) const Book = mongoose.model('Book', bookSchema) module.exports = {Book}

Aquí está la ruta para poblarlos juntos

 AuthorRouter.get('/authors/:id', async(req, res)=>{ const authorID = req.params.id try { const author = await Author.findById(authorID) try { const populated = await author.populate({path: 'books.book', select: 'name description -_id'}) console.log(populated); res.status(201).send(populated) } catch (e) { res.status(401).send(`${e}\n Unable to populate categories`) } } catch (error) { res.status(401).send('Unable to find author') } })

La salida es la siguiente con una matriz de libros vacía:

 { "_id": "123", "name": "testuser", "books": [], "__v": 0 }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Rellenar una matriz de referencias funciona de la misma manera que una única referencia . Simplemente llame al método de llenado en la consulta y se devolverá una matriz de documentos en lugar de los _id originales.

En tu caso sería:

 const populated = await author.populate({path: 'books', select: 'name description -_id'});
over 4 years ago · Santiago Trujillo Denunciar

0

Oye, he modificado tu código, intenta usar este

Este es su archivo de esquema de autor

 const Schema = mongoose.Schema; const authorSchema = mongoose.Schema({ _id:{ type: String, required: true, unique: true, trim: true }, name: { type: String, required: true, trim: true }, books: [{ type: Schema.Types.ObjectId, ref: "bookSchema" }] }, {_id:false}) const Author = mongoose.model('Author', authorSchema) module.exports = {Author}

Y esta es tu ruta

 AuthorRouter.get('/authors/:id', async(req, res)=>{ const authorID = req.params.id try { const author = await Author.findById(authorID) try { const populated = await author.find().populate('books'); console.log(populated); res.status(201).send(populated) } catch (e) { res.status(401).send(`${e}\n Unable to populate categories`) } } catch (error) { res.status(401).send('Unable to find author') } })
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