Firestore هو حلّ جيد لقاعدة بيانات قابلة للتوسّع من أجل مزامنة البيانات على مستوى عملاء الويب.
بالنسبة إلى العديد من التطبيقات، من المهم بشكل خاص أن يتوفّر في Firestore وضع "العمل بلا إنترنت" المُدار، مما يتيح لك إنشاء تطبيقات سريعة الاستجابة تعمل بغض النظر عن وقت استجابة الشبكة أو اتصال الإنترنت. ولكن حِزم SDK الغنية بالميزات تزيد من حجم التطبيق. ما هو الإجراء الذي تقدّمه Firebase للتطبيقات التي لا تحتاج سوى إلى استخدام عمليات الإنشاء والقراءة والتعديل والحذف الأساسية، ولا تحتاج إلى دعم مُدار بلا إنترنت؟
الحل: Firestore Lite
Firestore Lite هي حزمة تطوير برامج (SDK) خفيفة الوزن ومُستقلة تستخدم بروتوكول REST فقط في Firestore، وهي تسمح بجمع مستند واحد وتنفيذ طلبات بحث وتعديل مستندات، وذلك بحجم يمثّل جزءًا بسيطًا من حجم حزمة تطوير البرامج (SDK) العادية للويب. لا يتضمّن Firestore Lite ميزة تعويض وقت الاستجابة، والتخزين المؤقت بلا إنترنت، واستئناف طلبات البحث، ومُستمعي اللقطات، ولكن في حالات استخدام معيّنة، يُعدّ تقليل حجم المكتبة ووقت بدء التشغيل ميزة رائعة.
استيراد Firestore Lite
تتوفّر أداة Firestore Lite من خلال npm كجزء من حزمة تطوير البرامج (SDK) المكوّنة من وحدات. وبالتالي، فإنّه مكوّن من وحدات بالكامل ويمكن إزالة أي وحدات منه.
يتوفّر أسلوب الاستيراد التالي.
import { initializeApp } from "firebase/app";
import {
getFirestore,
getDoc,
updateDoc
} from 'firebase/firestore/lite';
ميزات واجهة برمجة التطبيقات غير المتوافقة مع Firestore Lite
من أجل تقليل الحجم والسرعة، لا يتضمّن Firestore Lite الميزات التالية من حزمة تطوير البرامج (SDK) العادية لـ Firestore:
- معالجات أحداث DocumentSnapshot لا يتم تضمين الطريقة
onSnapshot
و كائناتDocumentChange
وSnapshotListenerOptions
وSnapshotMetadata
وSnapshotOptions
وUnsubscribe
. - مساعِد الاحتفاظ بالبيانات: لا يتم تضمين الطريقتَين
enableIndexedDBPersistence
وenableMultiTabIndexedDbPersistence
وclearIndexedDbPersistence
. - حِزم Firestore: لا يتم تضمين الطريقة
loadBundle
والطرق المرتبط بها والكائنَينLoadBundleTask
وLoadBundleTaskProgress
.
تنفيذ عمليات جلب المستندات وطلبات البحث عنها وتعديلها
بعد استيراد Firestore Lite، يمكنك إجراء جميع طلبات البيانات وتعديلات واجهة برمجة التطبيقات المألوفة. تنطبق جميع حالات استخدام إضافة البيانات والحصول على البيانات.
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.