2012-06-05 7 views
0

내 이미지 공유 응용 프로그램에서 이미지를 업로드하고 앨범을 만들 수 있습니다. 사이트에서 이미지를 삭제하면 앨범에서도 이미지가 삭제됩니다 (이미지가있는 이미지).몽고 쿼리가 작동하지 않습니다.

다음은 이미지를 삭제하는 경로이며, 내가 정말 도움이 필요한 이유는 아래 앨범의 이미지 (imageName 및 imageId)를 삭제하는 코드가 작동하지 않는 이유입니다.

미리 감사드립니다.

모델 : - :

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

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); 

를 아래의 코드에서 작동하지 않는 부분은 다음과 같다 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

자바 스크립트 배열은 remove 방법이 없습니다. 대신 albums[i].imageName.splice(j, 1);과 같은 코드를 사용해야합니다.

관련 문제