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は、モジュラーSDKの一部としてnpmを介して利用できます。したがって、完全にモジュール化されており、ツリーシェイクが可能です。

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

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

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

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

  • DocumentSnapshotイベントハンドラーonSnapshotメソッドとDocumentChangeSnapshotListenerOptionsSnapshotMetadataSnapshotOptions 、およびUnsubscribeオブジェクトは含まれていません。
  • 永続性ヘルパーenableIndexedDBPersistenceenableMultiTabIndexedDbPersistence 、およびclearIndexedDbPersistenceメソッドは含まれていません。
  • FirestoreバンドルloadBundleメソッドと関連メソッド、およびLoadBundleTaskオブジェクトとLoadBundleTaskProgressオブジェクトは含まれていません。

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

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

  • オンラインステータス-FirestoreLiteは、ライブアップデートを必要とせず、接続性のあるアプリに適しています。
  • サイズの制約-JavaScriptバンドル全体のサイズを小さくしたい場合は、FirestoreLiteが最適です。