Firestore 是可擴充的資料庫解決方案,可讓您在各個網頁用戶端之間同步處理資料。
對許多應用程式而言,Firestore 的受管理離線支援功能特別重要,可讓您建構回應式應用程式,不受網路延遲或網際網路連線問題影響。但功能豐富的 SDK 需要耗費大量資源。如果應用程式只需要使用基本的建立、讀取、更新及刪除作業,而且不需使用代管離線支援,Firebase 可以提供什麼協助?
解決方案:Firestore Lite
Firestore Lite 是輕量型、獨立的 REST 專用 Firestore SDK,可支援單一文件擷取、查詢執行和文件更新,且大小僅是一般 Web SDK 的一小部分。Firestore Lite 會省略延遲補償、離線快取、查詢暫停和快照事件監聽器,但在特定用途下,程式庫大小和啟動時間的縮減,可帶來極佳的權衡。
匯入 Firestore Lite
您可以透過 npm 取得 Firestore Lite,做為模組化 SDK 的一部分。因此,它是完全模組化且可進行樹狀結構搖除。
支援下列匯入樣式。
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
、SnapshotOptions
和Unsubscribe
物件。 - 持久性輔助程式。不包含
enableIndexedDBPersistence
、enableMultiTabIndexedDbPersistence
和clearIndexedDbPersistence
方法。 - Firestore 套件。
loadBundle
方法和相關方法,以及LoadBundleTask
和LoadBundleTaskProgress
物件均未納入其中。
實作文件擷取、查詢和更新
匯入 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 非常適合。