Firestore 是一个很好的可扩展数据库解决方案,可以在 Web 客户端之间保持数据同步。
对于许多应用程序,Firestore 的托管离线支持尤为重要,它让您构建响应式应用程序,无论网络延迟或互联网连接如何都能正常工作。但功能丰富的 SDK 需要付出一定的规模成本。 Firebase 为只需要使用基本的创建、读取、更新和删除操作而不需要托管离线支持的应用程序提供什么?
解决方案:Firestore Lite
Firestore Lite 是一款轻量级、独立的 REST-only Firestore SDK,支持单个文档提取、查询执行和文档更新,大小仅为常规 Web SDK 的一小部分。 Firestore Lite 省略了延迟补偿、离线缓存、查询恢复和快照侦听器,但对于特定用例,库大小和启动时间的减少是一个很好的权衡。
导入 Firestore Lite
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
、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 是一个不错的选择。