🍀

No Offset 오작동 해결, Stream 활용, 특정 문자열 시작

작성일자
Mar 15, 2023
태그
DIARY_DEVELOP
프로젝트
BeachCombine
책 종류

공부한 내용

No Offset 오작동 문제 해결 : 로직 수정

1. 기존 방식에서 오작동이 있는 걸 확인하고 수정해줬다.

  • 핵심은 return member.totalPoint.loe(lastPoint).and(member.id.gt(lastId)); 가 아래로 바꼈단 것이다.
    • 왜 이것이 문제였냐면,
      • 위 코드를 넣었던 의도는 현재 더보기 방식이 포인트가 작은 애들을 보여주는 방식인데, 포인트가 같은 애들을 안 보여줄 순 없으니 그 경우엔 아이디가 큰 애들을 보여주기 위함이었다.
      • 허나, 기존의 (member.totalPoint ≤ lastPoint) && (membe.id > lastId) 는 포인트가 작거나 같으면서, 아이디가 큰 애들을 보여주게 되어 포인트가 작은데 아이디가 작은 애들은 보여주지 못한다. 쉽게 말해, 의도한 대로 동작하지 않는다.
      • 따라서, 이를 (member.totalPoint < lastPoint) || { (member.totalPoint == lastPoint) && member.id > lastId) } 로 분류해줌으로써 의도한 대로 동작하게 수정해줬다.
      • 해당 코드는 더보기 방식에서 포인트가 큰 순서대로 보여주고, 아이디가 같은 경우엔 아이디를 작은 순서대로 보여준다.
    • 전체 코드는 아래와 같다.
      • 기존 코드
        • 수정한 코드

        2. 더보기 마지막 페이지를 알려주기 위해, 다음 페이지 유무를 같이 보내주기로 했다.

        • 이를 위해 pageSize보다 하나 크게 데이터를 가져오게 했다. 하나 더 가져온 데이터가 존재하면 다음 페이지가 있는 것이고, 존재하지 않는다면 다음 페이지가 없는 것이다.

          stream 쓰는 법 두 가지

          구글 프로필 이미지 저장 (특정 문자열 시작)

          • 링크 그대로 받아와서 저장하는 거 까진 문제 없는데, 링크를 보내줄 때 aws s3에서 꺼내온 이미지 처리와 구분해줘야 했다
          • 그 이유는, aws s3 버킷에 넣는 친구들은 db에 버킷이름만 저장해서이다.
          • aws s3 주소가 바뀔까봐 그렇게 했는데, 구글 프로필 이미지와 구분해줘야 하는 불편함이 있었다.
          • 잘못 보내지는 예시
            • notion image
           

          하루 정리

          TIL 작성하기
          BeachCombine
          랭킹 오작동 해결
          랭킹 마지막페이지 구분 로직 추가
          구글 프로필 이미지 저장 로직 추가