마이페이지 조회 시 Response
: 사용자 정보, 사용자가 작성한 포스트 정보, 총 게시글 수, 사용자가 받은 총 좋아요 수
게시글을 작성하지 않은 상태로 마이페이지 조회를 할 때는 문제가 없다.
여기서 게시글을 작성하면..!?
NullPointerException 발생!
HeartService의 totalHeartsByUser에 무슨 문제가..? 로직에는 문제가 없어 보이는데..?
아! 값 초기화 설정을 안 해서 null로 들어가 있는구나!
null 값을 sum하려고 하니까 totalHeartsByUser에서 문제가 생긴 것..!
Post post = new Post(user, requestDto, 0L);
이렇게 heartNum을 0L로 초기화하였다.
<전체 코드>
@Transactional
public ResponseDto<?> writePost(User user, PostRequestDto requestDto, List<MultipartFile> imageFileList) {
List<String> imageUrlList = storageService.uploadFile(imageFileList, "posts/"); //이미지 S3에 업로드
**Post post = new Post(user, requestDto, 0L);**
postRepository.save(post); //게시물 db에 저장
List<Image> collect = imageUrlList.stream().map(image -> new Image(image, post)).collect(Collectors.toList()); //String List를 Image List로 변환
imageRepository.saveAll(collect);
Long commentNum = commentRepository.countByPost(post); //댓글 수 게시물id로 세서 찾기 - 게시물을 저장 먼저 해야 id가 생겨서 count 가능
return ResponseDto.success(PostCreateResponseDto.builder() //responseDto 돌려주기
.post(post)
.imageUrl(collect.get(0).getImageUrl())
.heartNum(0L)
.commentNum(commentNum)
.build());
}
그럼 이제 게시글 등록, 좋아요 기능 모두 잘 들어간다~!
와 값 초기화 해야 하는 부분은 생각지도 못했는데
이번 주에 NullPointerException을 너무 많이 만나서 이제 방법을 알게 되었다.
이것도 기본 중의 기본이겠지..? ㅎㅎ
괜찮아 차곡차곡 다져가자!!!!!