دليل احترافي لدمج وإدارة قواعد بيانات Firebase Realtime

1. استدعاء مكتبة Firebase SDK الأساسية وقاعدة البيانات

يجب أولاً ربط ملفات السكريبت الخاصة بإصدار الcompat لضمان توافق الأكواد وسهولة الاتصال المباشر بالسيرفر:

<script src="https://www.gstatic.com/firebasejs/9.1.3/firebase-app-compat.js"></script>
<script src="https://www.gstatic.com/firebasejs/9.1.3/firebase-database-compat.js"></script>
2. تهيئة الاتصال وتفادي التكرار

إعداد كائن الإعدادات (Database URL) والتحقق من عدم تهيئة التطبيق مسبقاً لمنع ظهور أخطاء برمجية:

const dbConfig = { databaseURL: "https://smartweb-dc91a-default-rtdb.firebaseio.com" };
if (!firebase.apps.length) {
    firebase.initializeApp(dbConfig);
}
const db = firebase.database();
3. كتابة البيانات (Set Method)

تستخدم لحفظ أو استبدال البيانات بشكل كامل في مسار محدد داخل قاعدة البيانات:

function saveData() {
    db.ref('users/user1').set({
        name: "أحمد",
        role: "مطور واجهات"
    });
}
4. تحديث جزء محدد من البيانات (Update Method)

تحديث خصائص معينة دون التأثير على باقي البيانات الموجودة في نفس المسار:

function updateStatus() {
    db.ref('users/user1').update({
        status: "متصل الآن"
    });
}
5. قراءة البيانات لمرة واحدة (Once Method)

جلب البيانات الحالية من مسار معين مرة واحدة عند تحميل الصفحة أو بناءً على حدث:

db.ref('users/user1').once('value').then(snapshot => {
    const userData = snapshot.val();
    console.log("بيانات المستخدم:", userData);
});
6. الاستماع للتغييرات بشكل فوري (On Method)

مراقبة التغيرات في السيرفر وتحديث الواجهة مباشرة للعميل لحظة بلحظة:

db.ref('web_stats/total').on('value', snapshot => {
    const total = snapshot.val() || 0;
    document.getElementById('counter').innerText = total;
});
7. إضافة عناصر جديدة بقوائم (Push Method)

ممتازة لإضافة تعليقات، رسائل، أو سجلات جديدة مع توليد معرف فريد (ID) تلقائياً لكل عنصر:

function addNewMessage(msgText) {
    db.ref('messages').push({
        message: msgText,
        timestamp: Date.now()
    });
}
8. العمليات المترابطة وآلية الـ Transactions

تستخدم لتحديث العدادات بدقة متناهية وتجنب تداخل الطلبات المتزامنة من عدة مستخدمين:

function incrementVisits() {
    db.ref('web_stats/visits').transaction(currentVal => {
        return (currentVal || 0) + 1;
    });
}
9. حذف البيانات (Remove Method)

حذف مسار بالكامل أو عقدة معينة من قاعدة البيانات عند الحاجة:

function deleteUserRecord() {
    db.ref('users/user1').remove()
      .then(() => { console.log("تم الحذف بنجاح"); });
}
10. تأمين وفلترة قواعد البيانات (Security Rules)

ضبط قواعد الصلاحيات في لوحة تحكم فايربيس لمنع الوصول غير المصرح به وضمان حماية البيانات:

{
  "rules": {
    ".read": true,
    ".write": true
  }
}