좋아요와 즐겨찾기 기능에서 발생한 이슈가 있었다.여러 사용자가 체크를 누른 후에 어느 한 사용자가 체크를 해제하면 DB에 저장해두었던 다른 사용자의 좋아요/즐겨찾기 데이터도 삭제되었다.
기존 삭제 로직에서는 아래와 같이 게시물의 id값만을 변수로 주었다.
@PostMapping("/review/like")
public void userReviewLike(@RequestBody UserReviewLikeDto userReviewLikeDto, @AuthenticationPrincipal UserDetailsImpl nowUser) {
if (userReviewLikeDto.getAction().equals("uncheck")) {
userReviewService.deleteLike(userReviewLikeDto.getUserReviewId());
} else {
userReviewService.saveLike(userReviewLikeDto.getUserReviewId(), nowUser);
}
}
처음 구성할 때 saveLike에는 현재 유저를 함께 저장하도록 했는데 왜 삭제에는 넣지 않았는지 모르겠다. 따라서 구체적으로 체크를 해제할 게시물을 특정지을 수 있도록 접속한 유저의 Id값을 추가하고 조회용 함수에도 연결키워드를 통해 연결해 주어 해결했다.
알고 나면 간단한 것인데도 여전히 MVC 모델에서 데이터가 넘나드는 흐름을 파악하기 어렵다. 그래서 해결책을 생각하는 것도 시간이 너무 오래 걸린다. 그래도 일단 해결했다는 점에서는 뿌듯함을 느꼈다는..