[개인 프로젝트] 게시판 만들기 (6) - 댓글 달기

KINA KIM·2022년 4월 19일
0
post-thumbnail

오늘은 댓글쪽까지 마무리했다. 지난 글에서 댓글 테이블을 게시물 테이블과 분리할지, 아니면 게시물 테이블 내에 삽입할지를 고민했는데 분리하기로 결정했다.

지금이야 혼자 사용하고 있는 작은 프로젝트라 상관은 없지만 실제 서비스에서 게시글 테이블 내에 댓글이 있으면 댓글이 실시간으로 달릴 때 댓글만 불러오는게 아니고 해당 게시글 전체를 함께 불러오게 되기 때문에 매우 비효율적일 것 같다.

또 댓글 관련 기능을 업데이트하거나 댓글 관련하여 수정해야 할 일이 생기면 상관없는 상위 테이블인 게시글 테이블까지 손을 봐야 하는 상황이 생길 수도 있을 것이다.

그래서 테이블은 분리하되 boardMain에서 댓글 수를 확인할 수 있도록 게시글 테이블에 댓글을 카운트할 수 있는 replyCnt라는 컬럼을 추가해줬다.

board 테이블의 최종 형태

reply 테이블의 최종 형태
(reply/postId/replyId 이런 식인데 좀 복잡한 구조인 것 같아서 좀 더 고민을 해봐야할 것 같다.)

댓글도 잘 달리고, 삭제도 잘 된다.

댓글 수정 기능은 각 댓글의 key값과 state로 전달받은 key값이 일치할 때 수정 화면으로 넘어갈 수 있도록 작업했다. 수정 버튼을 클릭했을 때 수정을 원하는 댓글의 key값을 modiReplyId state에 전달하고,

Object.map의 key값과 modiReplyId의 값이 일치할 경우 해당 댓글만 수정 화면으로 넘어가고,

수정 완료 버튼을 누르면 modiReplyId의 state값을 0으로 바꿔주면서 수정 화면에서 빠져나가도록 한다.

수정창으로 넘어간 화면

댓글 수정이 됐을 때

게시물 쓰기/수정/삭제와 댓글 쓰기/수정/삭제는 코드를 좀 더 간결하게 바꿀 필요성이 있어보인다. 그리고 한 가지 간과한 것이 있는데, 프로필 이미지 URL이 전역적으로 관리되지 않는다는 점이었다!! 이렇게 되면 프로필 이미지를 변경했을 때 기존에 쓴 댓글과 게시글의 이미지들이 일괄적으로 변경되지가 않는다. 해결 방법을 찾아야겠다 (ㅠㅠ)

0개의 댓글