Firestore — это хорошее масштабируемое решение для базы данных, позволяющее синхронизировать данные между веб-клиентами.
Для многих приложений управляемая офлайн-поддержка Firestore особенно важна, позволяя создавать адаптивные приложения, которые работают независимо от сетевой задержки или подключения к Интернету. Но многофункциональные SDK имеют свою цену. Что предлагает Firebase для приложений, которым нужно использовать только базовые операции создания, чтения, обновления и удаления и которым не нужна управляемая офлайн-поддержка?
Решение: Firestore Lite
Firestore Lite — это легкий, автономный Firestore SDK только для REST, который поддерживает выборку отдельных документов, выполнение запросов и обновления документов, при размере, составляющем лишь часть обычного Web SDK. Firestore Lite не включает компенсацию задержки, автономное кэширование, возобновление запросов и прослушиватели снимков, но для определенных случаев использования сокращение размера библиотеки и времени запуска является отличным компромиссом.
Импорт Firestore Lite
Firestore Lite доступен через npm как часть модульного SDK . Таким образом, он полностью модульный и tree-shake-совместимый.
Поддерживается следующий стиль импорта.
import { initializeApp } from "firebase/app";
import {
getFirestore,
getDoc,
updateDoc
} from 'firebase/firestore/lite';
Функции API, не поддерживаемые Firestore Lite
Для экономии места и скорости в Firestore Lite отсутствуют следующие функции из стандартного Firestore SDK:
- Обработчики событий DocumentSnapshot . Метод
onSnapshot
и объектыDocumentChange
,SnapshotListenerOptions
,SnapshotMetadata
,SnapshotOptions
иUnsubscribe
не включены. - Помощники сохранения . Методы
enableIndexedDBPersistence
,enableMultiTabIndexedDbPersistence
и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');
Когда использовать Firestore Lite
Может быть сложно решить, когда отказаться от стандартных функций Firestore SDK по сохранению и кэшированию в автономном режиме. Вы должны понимать эти функции, прежде чем решиться обменять их на более низкие накладные расходы Firestore Lite. В общем, взвесьте эти факторы, принимая решение об использовании Firestore Lite:
- Статус «Онлайн» — Firestore Lite подходит для приложений, которым не нужны обновления в реальном времени и которые имеют подключение к сети.
- Ограничения по размеру — Firestore Lite отлично подойдет, если вы хотите уменьшить общий размер пакета JavaScript.