준진의 블로깅
Home
  • 분류 전체보기 (141)
    • NO TITLE (2)
    • 개발 (69)
    • 이모티콘 (5)
    • 개인사업자 & 세금 (14)
    • 부동산 & 인테리어 (8)
    • 여행 (7)
      • 제주도 (0)
      • 미국서부(2019) (4)
      • 스페인(2017) (1)
    • 맛집 (5)
      • 분당, 서현, 판교 (5)
    • 반려견 (10)
    • 프랑스어 (18)
Home
  • 분류 전체보기 (141)
    • NO TITLE (2)
    • 개발 (69)
    • 이모티콘 (5)
    • 개인사업자 & 세금 (14)
    • 부동산 & 인테리어 (8)
    • 여행 (7)
      • 제주도 (0)
      • 미국서부(2019) (4)
      • 스페인(2017) (1)
    • 맛집 (5)
      • 분당, 서현, 판교 (5)
    • 반려견 (10)
    • 프랑스어 (18)
블로그 내 검색

준진의 블로깅

맛집, 개인사업자 정보, 개발, 여행 등등 잡다구리

  • 개발

    [Swift/Firebase] Pagenation 했을때 같은 아이템이 계속 나오는 이슈

    2022. 8. 14.

    by. dundin

    반응형

    우리 회사는 FireStore를 사용하는 중

    FireStore는 pagenation을 지원하는데, 뭔가 잘 안되는 이슈가 있어서 해결방법까지 정리해보겠습니다. 

     

    이슈) 

    createdAt을 기준으로 pagenation을 구현할 때 start(after:) 를 사용하면 같은 값은 exclude라고 분명 문서에 나오고 있는데 createdAt이 동일한 아이템이 자꾸 나오는 문제가 있음 

    var ref = db.col(.Users).doc(userId).col(.Likes)
            .order(by: "createdAt", descending: true)
            .limit(to: limit)
    
    if let date = date {
        ref = ref.start(after: [date])
    }

     

     

    문제 파악 ) Likes 라는 Document를 Decode 할때 createAt을 Date 타입으로 디코딩 하고 있었다.

    public init(from decoder: Decoder) throws {
    	let container = try decoder.container(keyedBy: CodingKeys.self)
    	userId = try container.decode(DocumentID<String>.self, forKey: .userId).wrappedValue
    	createdAt = try container.decode(Date.self, forKey: .createdAt)
    }

     

    이때 FireStore Timestamp -> Date 타입으로 바뀌게 되는데, 이게 바뀌게 되는것 자체는 별 문제가 아니지만 이걸 가지고 다시 query를 하는 것이 문제였다

     

     

    해결) 다시 date -> Timestamp 타입으로 변경해서 쿼리하면 해결됩니다 ~! 에고 시간 너무 많이썼다

    if let date = date {
        ref = ref.start(after: [Timestamp(date: date)])
    }
    반응형
    저작자표시 비영리 변경금지 (새창열림)

    '개발' 카테고리의 다른 글

    [Swift/iOS] Auto rolling CollectionView 구현하기 & 스냅 스크롤 구현하기  (0) 2022.11.02
    Facebook Developer Trouble shooting  (0) 2022.08.24
    [iOS/WWDC] App Attest & Device Check  (1) 2022.08.03
    [Swift/iOS] UIPageControl 크래시 이슈 해결 (Page-out-of-bounds)  (0) 2022.08.02
    Nuke & CollectionView 이미지 프리로드하기  (0) 2022.07.20

    댓글

    관련글

    • [Swift/iOS] Auto rolling CollectionView 구현하기 & 스냅 스크롤 구현하기 2022.11.02
    • Facebook Developer Trouble shooting 2022.08.24
    • [iOS/WWDC] App Attest & Device Check 2022.08.03
    • [Swift/iOS] UIPageControl 크래시 이슈 해결 (Page-out-of-bounds) 2022.08.02
    맨 위로
전체 글 보기
Tistory 로그인
Tistory 로그아웃
로그아웃 글쓰기 관리

Today

Total

Powered by ⓒ Kakao Corp.

Designed by Nana
블로그 이미지
dundin

티스토리툴바