Eliminando un documento y quitando su referencia en alguna otra colección

Si queremos eliminar un documento en Mongoose, pero ese documento esta dentro de otro mediante una referencia, podemos hacer algo asi para eliminarlo y quitarlo de donde este referenciado:

Lo primero que hacemos es buscar el documento a eliminar y lo eliminamos como se hace normalmente, en este caso se trata de un documento dentro de la colección de Pedidos:

Pedidos.findOneAndRemove({_id: req.params.id}, (err, eliminado)=>{
 if (err) {
 res.send(err)
 }else {

Después se busca y edita el documento donde esta referenciado el documento que acabamos de eliminar, en este ejemplo la otra colección es Lugares, para después hacer un $pull con el que quitamos el Pedido de Lugar:

Lugares.findByIdAndUpdate({_id:req.body.lugar}, {
 '$pull': {
 'pedidos': req.params.id
 }
 }, (err, lugarActualizado)=>{
 if (err) {
 res.send(err)
 }else {

Despues de que las dos operaciones se realizan, ya podemos redireccionar a el documento original:

res.redirect('/lugares/' + lugarActualizado._id)
 }
 });
}
 })

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s