댓글 지우기 구현하기 (sequelize)

Jaewoong2·2020년 8월 1일
0

boilerplate

목록 보기
10/13

구현한 댓글의 형태는 이런식으로 댓글의 대댓글이 있고 또 그것에 대한 대대댓글이 있습니다.

근데, Comment.destroy({id:req.body.commentId}) 이렇게 하게 되면, 딱 요청한 id의 댓글만 사라지고, 그것에 대댓글 들은 그대로 남아 있는 것을 확인했습니다. ( db + 클라이언트 ) 그래서, comment에는 CommentId 가 있는데, Comment.belongsTo(db.Comment)
이건 위에서 초록색글씨 처럼 해당 댓글을 갖고 있는 원댓글의 id로서 기능을 할 것입니다. 따라서
Comment.destroy({id:req.body.commentId})을 하기 전에,

const recomment = await Comment.findAll({
    where : { CommentId : commentid }
})
  1. 서버에서 요청한 댓글을 원댓글로 갖고 있는 댓글들을 모두 찾은 후에 (대댓글)
recomment.map(async v => {
   await Comment.destroy({ where : { CommentId : v.id }})
            })
  1. 대댓글들을 원댓글로 갖고 있는 모든 (대대댓글) 들을 먼저 지워줍니다.
  • 만약 원댓글을 먼저 지우게 된다면 CommentId의 값이 null 이 되어서 CommentId를 찾지 못합니다
  1. 그리고 대대댓글을 지우고 대댓글을 지웁니다.await Comment.destroy({ where : { CommentId : comment.id }})

  2. 그리고 마지막으로 원 댓글을 지워줍니다
    await Comment.destroy({ where : { id : commentid, UserId : req.user.id }})


이렇게 하면 댓글을 지우면 그 아래에 있는 대댓글들도 모두 지워지는 것을 확인 할 수 있습니다.

profile
DFF (Development For Fun)

0개의 댓글