Firestore를 사용하여 Batch에 500개 이상의 데이터 쓰기

Firestore의 Batch()는 한 번에 쓸 수 있는 데이터 수가 500건 이하에 불과하다.
만약 한 번에 500건 이상을 쓰면 실패할 것이다.
물론 실패할 때는 어떤 행동을 취할까? 1~500건은 성공적이다. 이상은 실패가 아니라 모든 기록이 실패한다.
https://firebase.google.com/docs/firestore/manage-data/transactions?hl=ja

500개 이상 적으세요.


그렇다면 500건 이상을 어떻게 쓰는지, 500건 이상이 있으면 데이터를 분할해 쓴다.
분할 후 쓴 견본은 다음과 같다.

const followerList = follower.docs;

  const batchArray: FirebaseFirestore.WriteBatch[] = [];
  batchArray.push(db.batch()!);
  let operationCounter = 0;
  let batchIndex = 0;

  followerList.forEach(async (doc: FirebaseFirestore.DocumentSnapshot) => {
    const timelineDoc = db
      .collection("timeline")
      .doc(doc.id);
    batchArray[batchIndex].set(timelineDoc, copyedData);
    operationCounter++;

    if (operationCounter === 499) {
      batchArray.push(db.batch());
      batchIndex++;
      operationCounter = 0;
    }
  });

  batchArray.forEach(async batch => await batch.commit());

좋은 웹페이지 즐겨찾기