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
للحفاظ على الحجم والسرعة، لا تتضمّن حزمة تطوير البرامج (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.