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.