Recherche d'une correspondance dans un champ de tableau
Dans mon image de partage de l'application, vous pouvez créer des albums et ajouter des images. Lorsqu'une image est supprimée à partir du site, il devrait ainsi être retiré de l'album(s) qui stocke les références de l'image (nom, id).
La chose j'ai besoin d'aide est de trouver les albums que l'on a stocké l'image (de référence) est sur le point d'être supprimé.
Dans l'itinéraire ci-dessous est ce que j'ai essayé jusqu'à présent, mais j'obtiens une erreur sur la requête. J'ai vérifié la Mongodb docs et de la syntaxe ressemble à ceci:
db.collection.find( { field : { $in : array } } );
Dans mon parcours le terrain et le tableau a changé de place, ce qui ne semble pas fonctionner.
Je voudrais vraiment l'apprécier un peu d'aide. Merci à l'avance!
Mes modèles se présente comme suit:
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 route pour la suppression d'une image:
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');
}
});
});
});
source d'informationauteur holyredbeard
Vous devez vous connecter pour publier un commentaire.
db.collection.find( { field : { $in : array } } );
n'est pas de la syntaxe que vous voulez. Qui dit "Trouvez-moi le document où ce domaine est l'une des valeurs de la liste que je vais vous donner dans un tableau."Vous souhaitez utiliser l'égalité tout en atteignant dans le tableau.
db.collection.find( { imageName:theImage } )
Cela dit de me trouver le document à l'endroit où imageName est l'image afin de revenir à l'Album (ou des Albums si une image peut être en plus d'un album qui contient cette image dans son imageName tableau.