더북(TheBook)

9.4.4.2 포스트 더 불러오기

이번에는 특정 포스트 이전에 작성한 포스트를 불러오는 getOlderPosts를 구현해봅시다.

lib/posts.js - getOlderPosts

(...)

export async function getOlderPosts(id) {
  const cursorDoc = await postsCollection.doc(id).get();
  const snapshot = await postsCollection
    .orderBy('createdAt', 'desc')
    .startAfter(cursorDoc)
    .limit(PAGE_SIZE)
    .get();

  const posts = snapshot.docs.map((doc) => ({
    id: doc.id,
    ...doc.data(),
  }));

  return posts;
}

이 함수는 특정 포스트의 ID 값을 파라미터로 받아와서 해당 포스트 이전에 작성한 포스트를 불러옵니다. 이번에도 불러오는 개수가 PAGE_SIZE만큼 제한되어 있습니다. startAfter는 숫자 또는 문서를 인자로 넣어줄 수 있습니다. 문서를 넣어주면 해당 문서 다음의 데이터가 반환되고, 숫자를 넣어주면 우리가 조회할 결과의 n번째 문서 이후의 데이터가 반환됩니다. 현재 상황에서는 문서 값을 넣는 것이 적합합니다. 다음 페이지를 불러오는 사이에 새로운 포스트가 작성될 수 있어, 이미 불러온 데이터를 또 한번 불러오는 현상이 발생할 수 있기 때문입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.