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

126
Vistas
Creación de un nuevo subdocumento de mongoose y adición al documento principal existente

Estoy construyendo un sitio web con una base de datos usando NodeJS, MongoDB, Express, Mongoose, etc.

  1. Tengo dos esquemas configurados: Eventos y un esquema de subdoc Categorías (entre otros).
  2. La función extrae una matriz que contiene los datos necesarios para crear varias categorías (este bit funciona), así como el ID del evento adjunto al final.
  3. Los primeros bits a continuación simplemente toman esa ID, luego la eliminan de la matriz (probablemente una mejor manera de hacer esto, pero nuevamente, funciona).
  4. Como se mencionó anteriormente, las categorías se crean correctamente (e incluso validan), lo cual es asombroso, PERO...
  5. No se adjuntan al documento del evento. El documento actualiza el campo "categorías" a un número aplicable de valores "nulos", pero por mi vida no puedo hacer que realmente tome las ID de las categorías recién creadas.

Cogí (y ajusté) el siguiente código de alguna parte, así que aquí es donde estoy...

 exports.addCategories = catchAsync(async (req, res, next) => { const categories = req.body; const length = categories.length; const eventID = categories[length - 1].eventId; categories.pop(); Event.findOne({ _id: eventID }, (err, event) => { if (err) return res.status(400).send(err); if (!event) return res.status(400).send(new Error("Could not find that event")); Category.create(categories, (err, category) => { if (err) return res.status(400).send(err); event.categories.push(category._id); event.save((err) => { if (err) return res.status(400).send(err); res.status(200).json(category); }); }); }); });

Actualmente, la salida de depuración de mongoose muestra lo siguiente (lo que confirma que la MAYORÍA funciona, pero las ID simplemente no se extraen correctamente):

 > Mongoose: events.updateOne({ _id: ObjectId("614bc221bc067e62e0790875")}, { '$push': { categories: { '$each': [ undefined ] } }, '$inc': { __v: 1 }}, { session: undefined })
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¡No importa! Me di cuenta de que "categoría" seguía siendo una matriz, en lugar de un elemento de la matriz de categorías como supuse.

Así que reemplacé esa sección con esta, y ahora... ¡funciona!

 Category.create(categories, (err, categories) => { if (err) return res.status(400).send(err); categories.forEach((category) => { event.categories.push(category._id); }); event.save((err) => { if (err) return res.status(400).send(err); }); });
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