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

103
Vistas
No se pueden crear valores múltiples en mongo - Matriz de objetos

Estoy tratando de guardar varios valores en mongoDB en el campo de reuniones , este es mi esquema:

 const MeetingSchema = new mongoose.Schema({ meetings: [ { name: { type: String, require: true, trim: true }, timer: { type: Number, require: true, trim: true }, }, ], date: { type: Date, default: Date.now, trim: true }, responsible: { type: String, require: true, trim: true }, });

Mi controlador:

 const { name, timer } = req.body; const response = await MeetingModel.create({ meetings: { name: name, timer: timer, }, }); return res.status(201).json(response);

Este es el cuerpo de mi solicitud que hice en Insomnia:

 { "name": "Meeting Name", "timer": 100, "name": "Meeting Name2", "timer": 400 }

Resultado:

 { "meetings": [ { "name": "Meeting Name2", "timer": 400, "_id": "615618effd96b823d2cf741b" } ], "_id": "615618effd96b823d2cf741a", "date": "2021-09-30T20:07:11.344Z", "__v": 0 }

Solo se guardan mis últimos datos, como puede ver, lo que estoy intentando es guardar varios datos en las reuniones , no solo el último.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

const { name, timer } = req.body; const response = await MeetingModel.create({ $push{ meetings: { name: name, timer: timer, } } }); return res.status(201).json(response);

A medida que actualiza una matriz, debe agregar $ empujar para agregar y $ tirar para eliminar Ref:Más información

about 4 years ago · Juan Pablo Isaza Denunciar

0

La solicitud que estás enviando

 { "name": "Meeting Name", "timer": 100, "name": "Meeting Name2", "timer": 400 }

reescribe el valor para el nombre y el temporizador. Debe ser una matriz de objetos, no un objeto en sí mismo, menos aún debe reescribir los valores. Para obtener el comportamiento deseado, la solicitud debería verse así:

 [ { "name": "Meeting Name", "timer": 100 }, { "name": "Meeting Name2", "timer": 400 } ]

De esta manera, también deberá cambiar su controlador. Debería iterar a través de la matriz, por lo que el código será así:

 req.body.forEach(item => { const response = await MeetingModel.create({ meetings: { name: item.name, timer: item.timer, }, }); }); return res.status(201).json(response);
about 4 years ago · Juan Pablo Isaza 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