2012-06-05 148 views
0

在我的圖像共享應用程序中,您可以上傳圖像並創建相冊。當你從網站上刪除一張圖片時,它也應該從相冊中刪除(獲得圖片的圖片)。Mongodb查詢不起作用

下面是刪除圖片的途徑,我真正需要幫助的是爲什麼在下面的相冊中刪除圖片(imageName和imageId)的代碼不起作用。

在此先感謝!

的車型:

var AlbumSchema = new Schema({ 
     title    : String, 
     imageName   : [String], 
     imageId   : [String] 
}); 

modelObject.AlbumSchema = AlbumSchema; 
modelObject.Album = mongoose.model('Album', AlbumSchema); 

-

var BlogPostSchema = new Schema({ 
    name : String, 
    size : Number, 
    type : String, 
    author : ObjectId, 
    title : String 
}); 

modelObject.Comment = mongoose.model('Comment', CommentSchema); 
modelObject.BlogPost = mongoose.model('BlogPost', BlogPostSchema); 

不會在下面的代碼工作中的部分如下:

albums[i].imageName.remove(j); 
albums[i].imageId.remove(j);        
albums[i].save(function (err){ 
    if (err) { 
     console.log(err); 
     // do something 
    } 
}); 

福LL代碼:

app.get('/blog/delete/:id', function(req, res){ 

    model.BlogPost.findById(req.params.id, function (err, blog){ 

     var theImage = blog.name; 

     var query = albumModel.Album.find({ imageName:theImage }) 
     query.exec(function (err, albums) { 

      if (!albums) { 

       blog.remove(function(err) { 
        console.log(err); 
        // do something 
       }); 

       res.redirect('/blogs'); 

      } 

      else { 
       for (var i = 0; i < albums.length; i++) { 
        for (var j = 0; j< albums[i].imageName.length; j++){ 

         if (theImage == albums[i].imageName[j]){ 

          albums[i].imageName.remove(j); 
          albums[i].imageId.remove(j);        
          albums[i].save(function (err){ 
           if (err) { 
            console.log(err); 
            // do something 
           } 
          }); 
         } 
        } 
       } 
      } 

      blog.remove(function(err) { 
       console.log(err); 
       // do something 
      }); 

      res.redirect('/blogs'); 
     }); 
    }); 
}); 

回答

0

JavaScript數組沒有remove方法,所以我希望你的代碼可能會崩潰。您應該使用類似albums[i].imageName.splice(j, 1);的代碼。