Firestore هو حلّ جيد وقابل للتوسّع لقاعدة البيانات، ويساعد في الحفاظ على مزامنة البيانات على جميع برامج الويب.
تتسم ميزة الإتاحة بلا إنترنت المُدارة في Firestore بأهمية خاصة للعديد من التطبيقات، فهي تتيح لك إنشاء تطبيقات سريعة الاستجابة تعمل بغض النظر عن وقت استجابة الشبكة أو الاتصال بالإنترنت. ومع ذلك، فإنّ حِزم تطوير البرامج (SDK) الغنية بالميزات تكون كبيرة الحجم. ما هي الميزات التي توفّرها Firebase للتطبيقات التي تحتاج فقط إلى استخدام عمليات الإنشاء والقراءة والتعديل والحذف الأساسية، ولا تحتاج إلى ميزة إتاحة البيانات بلا إنترنت؟
الحل: Firestore Lite
Firestore Lite هي حزمة تطوير برامج (SDK) خفيفة الوزن ومستقلة ومتاحة فقط عبر REST، وتتيح جلب مستند واحد وتنفيذ طلبات البحث وتعديل المستندات، وذلك بحجم أصغر بكثير من حجم حزمة تطوير البرامج العادية على الويب. لا تتضمّن 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 الإجمالي.