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