Estoy tratando de actualizar cada elemento dentro de una matriz con Mongoose. Lo que me gustaría tener es que cada usuario invitado a un evento tenga el evento creado dentro de una matriz. Pero recibo un error SyntaxError: Unexpected token '.' al intentar un bucle for. ¿Alguien tiene una solución?
Este es mi código:
router.post("/new-event", (req, res, next) => { const { title, organiser, invitedPeople, } = req.body Event.create({ title, organiser, invitedPeople, }) .then(createdEvent => { User.findByIdAndUpdate( organiser, { $push: { organisedEvents: createdEvent } }, { new: true } ).then(updatedUser => { for (let i = 0; i < invitedPeople.length; i++) { User.findByIdAndUpdate( invitedPeople[i], { $push: { invitedEvents: createdEvent } }, { new: true } ) } .then(updatedUsers => { res.status(200).json({ user: updatedUser, createdEvent, updatedUsers, }) }) }) }) .catch(err => next(err)) }) El resto funciona bien, solo que este $push dentro del bucle for no funciona.
¡Gracias por tus respuestas!
Puede actualizarlos todos con una consulta. No necesitas un bucle for .
En lugar de hacer esto:
for (let i = 0; i < invitedPeople.length; i++) { User.findByIdAndUpdate( invitedPeople[i], { $push: { invitedEvents: createdEvent } }, { new: true } ) }Puedes hacerlo:
User.update( { _id: { "$in": invitedPeople }}, { $push: { invitedEvents: createdEvent } }, { new: true } )