在我的图片共享应用程序中,您可以创建相册并向其添加图像。当从网站删除图像时,也应该从存储图像引用的相册(名称,ID)中删除它。
我需要帮助的是查找存储了即将删除的图像(参考)的相册。
在下面的路线中是我到目前为止所尝试的,但我在查询中收到错误。我检查了Mongodb文档,语法如下:
db.collection.find( { field : { $in : array } } );
在我的路线中,字段和数组已切换位置,这似乎不起作用。
我真的很感激一些帮助。提前谢谢!
我的模型如下所示:
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);
删除图片的路线:
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');
}
});
});
});
答案 0 :(得分:35)
db.collection.find( { field : { $in : array } } );
不是您想要的语法。这就是说“找到我在这个字段中有一个列表值的文档,我将在一个数组中给你。”
您希望在reaching into the array时使用相等。
db.collection.find( { imageName:theImage } )
这就是找到imageName为theImage的文档,这样就会返回Album(或者如果图片可以在多个相册中,则为Albums),其imageName数组中包含该图像。