Firestore 是一個很好的可擴展資料庫解決方案,可在 Web 用戶端之間保持資料同步。
對於許多應用程式來說,Firestore 的託管離線支援尤其重要,它可以讓您建立響應式應用程序,無論網路延遲或 Internet 連接如何,都可以正常運行。但功能豐富的 SDK 需要付出一定的規模成本。 Firebase 為僅需要使用基本建立、讀取、更新和刪除操作且不需要託管離線支援的應用程式提供什麼?
解決方案:Firestore Lite
Firestore Lite 是一款輕量級、獨立的僅 REST Firestore SDK,支援單一文件擷取、查詢執行和文件更新,其大小僅為常規 Web SDK 的一小部分。 Firestore Lite 省略了延遲補償、離線快取、查詢復原和快照偵聽器,但對於特定用例,程式庫大小和啟動時間的減少是一個很大的權衡。
導入 Firestore Lite
Firestore Lite 可透過 npm 作為模組化 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 非常適合。