Firestore 데이터 처리 방법에 대한 노트

개요


최근에 Firestore를 만져봤는데 총결산 같은 걸 써보고 싶었어요.기본적으로 정식 문서에 쓰여 있지만 자신이 이루고 싶은 것이 있을 때 어떤 실현이 좋을지 상상하기 어렵다.개인적인 취향의 내용을 한데 섞어 이번 보도로 삼았다.

전제 조건

  • 이번에는 데이터 처리 방법에만 주목하기 때문에 인증 부분의 내용은 생략합니다.
  • 주석이 없는 한 JavaScript 구현을 전제로 합니다.
  • 설치에 관해서는 Firebase의Firestore에서 사이트에서 데이터를 추가하기 전에의 글을 참조하십시오.
  • 데이터 형식 정보


    Firestore는 NosQL의 데이터베이스로 분류되어 문서(json) 형식으로 데이터를 저장합니다.몬godb랑 가까워요.데이터 저장에 대한 자세한 내용은 여기.의 문서에 기재되어 있습니다.
    대략적인 개념의 이미지로서 RDB에 소장되어 있는 표, 문서는 기록으로 지정됩니다.문서는 json과 비슷한 형식으로 저장되며, 문서마다 ID가 지정됩니다.문서 아래쪽에서 하위 모음집 형식으로 데이터를 얻을 수 있지만 데이터 구조가 이해하기 어려울 것 같아서 개인적으로는 사용하지 않는 것이 좋다고 생각합니다.
    실제 화면에서 참조할 수 있는 이미지는 다음과 같습니다.

    데이터 가져오기


    데이터 취득에 관해서는 문서 ID를 지정하는 방법과 where 문장에서 모음에서 상응하는 조건을 지정한 후 얻는 방법으로 나뉜다.여기.의 공식 문서에는 상세한 설명이 있지만 간단한 실크 샘플을 첨부합니다.

    [문서 ID를 지정하는 방법]


    const db = firebase.firestore();
    db.collection("collecton_name").doc("doc_name").get()
      .then((doc) => {
        const data = doc.data();
        // データ取得後の処理
      })
      .catch((error) => {
        // エラー時の処理
      });
    

    [where 문장에서 추출하는 방법]


    const db = firebase.firestore();
    db.collection("collecton_name").where("status", "==", "active").get()
      .then((docs) => {
        docs.forEach((doc) => {
          const data = doc.data();
          // データ取得後の処理
        });
      });
      .catch((error) => {
        // エラー時の処理
      });
    
    또한 이 데이터를 가져오는 것을 감시하고 실시간으로 업데이트된 데이터를 가져오는 방법도 있다.상세한 상황은 Firestore에서 실시간 채팅(웹 편) 중 하나의 글에서 snapshot이라는 기능을 사용하여 실현할 수 있다.
    다음은 컬렉션 추가 시 snapShot에서 취득한 실장 샘플.
    const db = firebase.firestore();
    db.collection("collecton_name");
      .orderBy("created_at", "asc")
      .limit(10)
      .onSnapshot((snapshot) => {
        snapshot.docChanges().forEach((change) => {
          if (change.type === "added") {
            const data = change.doc.data();
    	// データ取得後の処理
          }
        });
      });
    

    데이터 업데이트(항목당)


    다음은 데이터 업데이트입니다.이 항목에서는 하나하나 추가, 갱신, 삭제하는 방법을 소개한다.Firestore 데이터 작업(취득, 추가, 업데이트, 삭제)의 글에는 상세한 내용이 있지만 샘플을 간단하게 첨부합니다.
    먼저 기본 모음이 지정된 문서 객체를 추가합니다.

    【추가】


    const db = firebase.firestore();
    db.collection("collecton_name")
      .add({ name : "sample_add"})
      .then((ref) => {
        // 成功時の処理
      })
      .catch((error) => {
        // エラー時の処理
      });
    
    단일 리드 포인트로 업데이트할 때 문서 ID를 지정합니다.

    【갱신】


    const db = firebase.firestore();
    db.collection("collecton_name").doc("doc_id")
      .update({ name : "sample_update"})
      .then((ref) => {
        // 成功時の処理
      })
      .catch((error) => {
        // エラー時の処理
      });
    
    삭제도 단일 시작 지점일 때 문서 ID를 지정합니다.

    【삭제】


    const db = firebase.firestore();
    db.collection("collecton_name").doc("doc_id")
      .delete()
      .then((ref) => {
        // 成功時の処理
      })
      .catch((error) => {
        // エラー時の処理
      });
    

    데이터 업데이트(배치 처리)


    마지막으로 여러 기록을 한꺼번에 처리하려면 어떻게 해야 좋을까요? 다음은 일괄 처리 기능을 소개합니다.Firestore를 통한 Batch 처리의 글에서 소개한 바와 같이Firestore는 일괄 처리 기능을 가지고 있다.나는 클라이언트도 실행할 수 있다고 생각하지만 서버에서 실행하는 것이 가장 좋다.한 가지 주의점은 한 번에 처리할 수 있는 건수가 최대 500건인 만큼 분할 처리도 500건 단위로 나눠야 한다는 것이다.

    좋은 웹페이지 즐겨찾기