يجب أولاً ربط ملفات السكريبت الخاصة بإصدار ال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>
إعداد كائن الإعدادات (Database URL) والتحقق من عدم تهيئة التطبيق مسبقاً لمنع ظهور أخطاء برمجية:
const dbConfig = { databaseURL: "https://smartweb-dc91a-default-rtdb.firebaseio.com" };
if (!firebase.apps.length) {
firebase.initializeApp(dbConfig);
}
const db = firebase.database();
تستخدم لحفظ أو استبدال البيانات بشكل كامل في مسار محدد داخل قاعدة البيانات:
function saveData() {
db.ref('users/user1').set({
name: "أحمد",
role: "مطور واجهات"
});
}
تحديث خصائص معينة دون التأثير على باقي البيانات الموجودة في نفس المسار:
function updateStatus() {
db.ref('users/user1').update({
status: "متصل الآن"
});
}
جلب البيانات الحالية من مسار معين مرة واحدة عند تحميل الصفحة أو بناءً على حدث:
db.ref('users/user1').once('value').then(snapshot => {
const userData = snapshot.val();
console.log("بيانات المستخدم:", userData);
});
مراقبة التغيرات في السيرفر وتحديث الواجهة مباشرة للعميل لحظة بلحظة:
db.ref('web_stats/total').on('value', snapshot => {
const total = snapshot.val() || 0;
document.getElementById('counter').innerText = total;
});
ممتازة لإضافة تعليقات، رسائل، أو سجلات جديدة مع توليد معرف فريد (ID) تلقائياً لكل عنصر:
function addNewMessage(msgText) {
db.ref('messages').push({
message: msgText,
timestamp: Date.now()
});
}
تستخدم لتحديث العدادات بدقة متناهية وتجنب تداخل الطلبات المتزامنة من عدة مستخدمين:
function incrementVisits() {
db.ref('web_stats/visits').transaction(currentVal => {
return (currentVal || 0) + 1;
});
}
حذف مسار بالكامل أو عقدة معينة من قاعدة البيانات عند الحاجة:
function deleteUserRecord() {
db.ref('users/user1').remove()
.then(() => { console.log("تم الحذف بنجاح"); });
}
ضبط قواعد الصلاحيات في لوحة تحكم فايربيس لمنع الوصول غير المصرح به وضمان حماية البيانات:
{
"rules": {
".read": true,
".write": true
}
}