In meiner Bild-Sharing-Anwendung können Sie Alben erstellen und Bilder zu ihnen hinzufügen. Wenn ein Bild von der Website gelöscht wird, sollte es ebenso aus dem Album entfernt werden, in dem Verweise auf das Bild (Name, ID) gespeichert sind.Finden einer Übereinstimmung in einem Array-Feld
Die Sache, die ich brauche mit Hilfe ist zu finden, welche Alben, die das Bild (Referenz) gespeichert hat, die gerade entfernt wird.
In der Route unten ist, was ich bisher versucht habe, aber ich bekomme einen Fehler bei der Abfrage. Ich habe die MongoDB docs überprüft und die Syntax sieht wie folgt aus:
db.collection.find({ field : { $in : array } });
In meiner Route das Feld und das Feld hat Orte geschaltet, die nicht zu funktionieren scheint.
Ich würde wirklich etwas Hilfe schätzen. Danke im Voraus!
Meine Modelle sieht wie folgt aus:
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);
Die Route für ein Bild zu löschen:
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');
}
});
});
});
Sehr gute Antwort (+1). Dies ist ein weiterer Link, den ich gefunden habe http://docs.mongodb.org/manual/tutorial/query-documents/#match-an-array-element – Tom
Dank Tom ___;) – coiso
Link ist jetzt tot. – Neta