En mi aplicación para compartir imágenes puede crear álbumes y agregarles imágenes. Cuando se elimina una imagen del sitio, también debería eliminarse de los álbumes que almacenan referencias a la imagen (nombre, id).Encontrar una coincidencia en un campo de matriz
Lo que necesito ayuda es encontrar los álbumes que han almacenado la imagen (referencia) que está a punto de eliminarse.
En la ruta siguiente, lo he intentado hasta ahora, pero aparece un error en la consulta. He comprobado los documentos MongoDB y la sintaxis es la siguiente:
db.collection.find({ field : { $in : array } });
En mi ruta del campo y la matriz tiene cambiado de lugar, que no parecen funcionar.
Realmente agradecería algo de ayuda. ¡Gracias por adelantado!
Mis modelos tiene el siguiente aspecto:
var AlbumSchema = new Schema({
title : String,
imageName : [String], <-- array the contains of images names
imageId : [String] <-- array the contains of images id's
});
modelObject.AlbumSchema = AlbumSchema;
modelObject.Album = mongoose.model('Album', AlbumSchema);
var ImageSchema = new Schema({
name : String,
size : Number,
type : String
});
modelObject.ImgSchema = ImgSchema;
modelObject.Image = mongoose.model('Image', ImgSchema);
La ruta para borrar una imagen:
app.get('/blog/delete/:id', function(req, res){
model.ImagePost.findById(req.params.id, function (err, blog){
var theImage = blog.name;
if (err) {
console.log(err);
// do something
}
var query = albumModel.Album.find({ imageName: { $in : theImage } });
query.exec(function (err, albums) {
if (!albums) {
console.log(err);
// do something
blog.remove(function(err) {
console.log(err);
// do something
});
res.redirect('/blogs');
}
else {
// code for removing the image(s) in the albums
res.redirect('/blogs');
}
});
});
});
Muy buena respuesta (+1). Este es otro enlace que encontré http://docs.mongodb.org/manual/tutorial/query-documents/#match-an-array-element – Tom
gracias Tom ___;) – coiso
El enlace está ahora muerto. – Neta