Firestore – это хорошее масштабируемое решение для баз данных, позволяющее синхронизировать данные между веб-клиентами.
Для многих приложений особенно важна управляемая поддержка офлайн-режима, которая позволяет создавать приложения, работающие независимо от задержки сети или подключения к интернету. Однако SDK с большим количеством функций занимают много места. Что Firebase предлагает для приложений, которым нужны только базовые операции создания, чтения, обновления и удаления и не требуется управляемая поддержка офлайн-режима?
Решение: Firestore Lite
Firestore Lite – это облегченный автономный SDK Firestore, который поддерживает только REST и позволяет получать отдельные документы, выполнять запросы и обновлять документы. При этом он занимает гораздо меньше места, чем обычный Web SDK. В Firestore Lite нет компенсации задержки, офлайн-кеширования, возобновления запросов и прослушивателей снимков, но в некоторых случаях уменьшение размера библиотеки и времени запуска компенсирует эти недостатки.
Импорт Firestore Lite
Firestore Lite доступен через npm в составе модульного SDK. Таким образом, он полностью модульный и поддерживает tree shaking.
Поддерживается следующий стиль импорта:
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 для получения и обновления данных. Применимы все варианты использования для добавления данных и получения данных.
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
Решить, когда отказаться от функций офлайн-сохранения и кеширования стандартного SDK Firestore, может быть непросто. Прежде чем переходить на Firestore Lite, убедитесь, что вам не нужны эти функции. Принимая решение о том, использовать ли Firestore Lite, учитывайте следующие факторы:
- Статус онлайн. Firestore Lite подходит для приложений, которым не нужны обновления в реальном времени и у которых есть подключение к интернету.
- Ограничения по размеру. Firestore Lite отлично подходит, если вы хотите уменьшить общий размер пакета JavaScript.