NahdaAIنهضة
Firebase & Supabase • المستوى الثاني • الدرس 4

قاعدة البيانات اللحظية (Realtime Database)

العودة لفهرس المستوى

أهداف الدرس العلمية

  • فهم الفرق بين Realtime DB (JSON شجري) و Firestore (مجموعات/مستندات).
  • كتابة البيانات بـ set و update و push.
  • الاستماع الفوري بـ onValue و onChildAdded.
  • إلغاء المستمعين بـ off لمنع تسرب الذاكرة.

1. Realtime DB vs Firestore

الميزةRealtime DBFirestore
البنية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 — إلغاء
التطبيق العملي المباشر

تحدي الدرس الرابع: بناء دردشة فورية

  1. أضف update، و remove، و push، و get، و onChildAdded، و off للـ imports.
  2. أنشئ updateUserField(userId, updates).
  3. أنشئ addMessage(messageData) بـ push.
  4. أنشئ listenToNewMessages(callback) بـ onChildAdded + query + limitToLast(10).
  5. أنشئ deleteUser(userId) بـ remove.
  6. أضف اختباراً تلقائياً يمر على كل الدوال.
⏳ جارٍ تحميل المحرر التفاعلي...