Firebase & Supabase • المستوى الثاني • الدرس 4
العودة لفهرس المستوىقاعدة البيانات اللحظية (Realtime Database)
أهداف الدرس العلمية
- فهم الفرق بين Realtime DB (JSON شجري) و Firestore (مجموعات/مستندات).
- كتابة البيانات بـ
setوupdateوpush. - الاستماع الفوري بـ
onValueوonChildAdded. - إلغاء المستمعين بـ
offلمنع تسرب الذاكرة.
1. Realtime DB vs Firestore
| الميزة | Realtime DB | Firestore |
|---|---|---|
| البنية | JSON شجري | مجموعات/مستندات |
| الاستعلامات | محدودة | متقدمة (where, orderBy) |
| السرعة | أسرع (لحظي) | سريع جداً |
| الأفضل لـ | دردشة، حالة أونلاين | تطبيقات معقدة |
2. البنية الشجرية
javascript
// Realtime DB = شجرة JSON
{
"users": {
"user-101": {
"name": "جمال",
"age": 30,
"online": true
}
},
"messages": {
"-Nabc123": { "sender": "user-101", "text": "مرحباً" },
"-Ndef456": { "sender": "user-102", "text": "أهلاً" }
}
}
// الوصول: ref(db, "users/user-101")3. عمليات Realtime DB
الكتابة
set— استبدال كاملupdate— تحديث جزئيpush— إضافة لعنصر جديدremove— حذف
الاستماع
onValue— استماع لمستندonChildAdded— عند إضافةonChildChanged— عند تعديلoff— إلغاء
التطبيق العملي المباشر
تحدي الدرس الرابع: بناء دردشة فورية
- أضف
update، وremove، وpush، وget، وonChildAdded، وoffللـ imports. - أنشئ
updateUserField(userId, updates). - أنشئ
addMessage(messageData)بـpush. - أنشئ
listenToNewMessages(callback)بـonChildAdded + query + limitToLast(10). - أنشئ
deleteUser(userId)بـremove. - أضف اختباراً تلقائياً يمر على كل الدوال.
⏳ جارٍ تحميل المحرر التفاعلي...