Catch up on everthing we announced at this year's Firebase Summit. Learn more

Cloud Firestore Lite Web SDK

Firestoreは、Webクライアント間でデータの同期を維持するための優れたスケーラブルなデータベースソリューションです。

多くのアプリでは、Firestoreのマネージドオフラインサポートが特に重要であり、ネットワーク遅延やインターネット接続に関係なく機能するレスポンシブアプリを構築できます。ただし、機能豊富なSDKにはサイズのコストがかかります。 Firebaseは、基本的な作成、読み取り、更新、削除の操作のみを使用する必要があり、管理されたオフラインサポートを必要としないアプリに何を提供しますか?

解決策:Firestore Lite

Firestore Liteは、軽量のスタンドアロンREST専用Firestore SDKであり、通常のWeb SDKサイズの何分の1かで、単一のドキュメントフェッチ、クエリ実行、およびドキュメント更新をサポートします。 Firestore Liteは、レイテンシー補正、オフラインキャッシュ、クエリ再開、スナップショットリスナーを省略していますが、特定のユースケースでは、ライブラリサイズと起動時間の削減は大きなトレードオフになります。

FirestoreLiteをインポートする

Firestore Liteはの一部としてNPMを介して利用可能であるモジュラーSDK 。したがって、完全にモジュール化されており、ツリーシェイクが可能です。

次のインポートスタイルがサポートされています。

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

FirestoreLiteでサポートされていないAPI機能

サイズと速度に関して、FirestoreLiteは標準のFirestoreSDKから次の機能を省略しています。

  • DocumentSnapshotイベントハンドラonSnapshot方法とDocumentChangeSnapshotListenerOptionsSnapshotMetadataSnapshotOptions及びUnsubscribeオブジェクトが含まれていません。
  • 永続ヘルパーenableIndexedDBPersistenceenableMultiTabIndexedDbPersistence 、およびclearIndexedDbPersistence方法が含まれていません。
  • FirestoreバンドルloadBundle方法及び関連する方法、及びLoadBundleTaskLoadBundleTaskProgressオブジェクトが含まれていません。

ドキュメントのフェッチ、クエリ、更新を実装する

Firestore Liteをインポートした後、使い慣れたAPIのgetおよびupdate呼び出しをすべて行うことができます。以下のためのユースケースデータを追加し、データを取得し、すべて適用されます。

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');

FirestoreLiteを使用する場合

標準のFirestoreSDKのオフライン永続性とキャッシュ機能をいつ手放すかを決めるのは難しい場合があります。 Firestore Liteのオーバーヘッドを低くするためにこれらの機能を交換することを決定する前に、これらの機能を理解する必要があります。一般に、Firestore Liteを使用するかどうかを決定するときは、次の要素を考慮してください。

  • オンライン状況- Firestore Liteは、ライブアップデートを必要と接続されていないアプリケーションに適しています。
  • サイズの制約-あなたの全体的なJavaScriptのバンドル・サイズを小さくしたい場合Firestore Liteは素晴らしいです。