Cloud Firestore 라이트 웹 SDK

Firestore는 웹 클라이언트 간에 데이터를 동기화 상태로 유지하기 위한 우수한 확장 가능한 데이터베이스 솔루션입니다.

많은 앱의 경우 Firestore의 관리형 오프라인 지원이 특히 중요하므로 네트워크 대기 시간이나 인터넷 연결에 관계없이 작동하는 반응형 앱을 구축할 수 있습니다. 그러나 기능이 풍부한 SDK에는 크기 비용이 있습니다. Firebase는 기본적인 생성, 읽기, 업데이트, 삭제 작업만 필요하고 관리형 오프라인 지원이 필요하지 않은 앱을 위해 무엇을 제공하나요?

솔루션: Firestore 라이트

Firestore Lite는 일반 웹 SDK 크기의 일부에서 단일 문서 가져오기, 쿼리 실행 및 문서 업데이트를 지원하는 가벼운 독립형 REST 전용 Firestore SDK입니다. Firestore Lite는 대기 시간 보상, 오프라인 캐싱, 쿼리 재개 및 스냅샷 리스너를 생략하지만 특정 사용 사례의 경우 라이브러리 크기 및 시작 시간 감소는 큰 절충안을 만듭니다.

Firestore 라이트 가져오기

Firestore Lite는 모듈식 SDK 의 일부로 npm을 통해 사용할 수 있습니다. 따라서 완전히 모듈화되고 나무를 흔들 수 있습니다.

다음 가져오기 스타일이 지원됩니다.

import { initializeApp } from "firebase/app";
import {
   getFirestore,
   getDoc,
   updateDoc
} from 'firebase/firestore/lite';

Firestore Lite에서 지원하지 않는 API 기능

크기와 속도를 위해 Firestore Lite는 표준 Firestore SDK에서 다음 기능을 생략합니다.

  • DocumentSnapshot 이벤트 핸들러 . onSnapshot 메소드와 DocumentChange , SnapshotListenerOptions , SnapshotMetadata , SnapshotOptionsUnsubscribe 객체는 포함되지 않습니다.
  • 지속성 도우미 . enableIndexedDBPersistence , enableMultiTabIndexedDbPersistenceclearIndexedDbPersistence 메소드는 포함되지 않습니다.
  • Firestore 번들 . loadBundle 메서드 및 관련 메서드, LoadBundleTaskLoadBundleTaskProgress 개체는 포함되지 않습니다.

문서 가져오기, 쿼리 및 업데이트 구현

Firestore Lite를 가져온 후에는 친숙한 모든 API 가져오기 및 업데이트 호출을 수행할 수 있습니다. 데이터 추가 및 데이터 가져오기 에 대한 사용 사례가 모두 적용됩니다.

import {
 getFirestore,
 getDoc,
 updateDoc,
 doc
} from '@firebase/firestore/lite';

const firestore = getFirestore(app);
const docRef = doc(firestore, 'collection/doc');
const docSnap = await getDoc(docRef);
await updateDoc(docRef, "field", 'value');

Firestore Lite를 사용해야 하는 경우

표준 Firestore SDK의 오프라인 지속성 및 캐싱 기능을 언제 포기할지 결정하는 것은 까다로울 수 있습니다. Firestore Lite의 낮은 오버헤드와 교환하기로 결정하기 전에 이러한 기능을 이해해야 합니다. 일반적으로 Firestore Lite 사용 여부를 결정할 때 다음 요소를 고려하십시오.

  • 온라인 상태 - Firestore Lite는 라이브 업데이트가 필요하지 않고 연결이 가능한 앱에 적합합니다.
  • 크기 제약 - 전체 JavaScript 번들 크기를 줄이려는 경우 Firestore Lite가 좋습니다.