0Pricing
JavaScript Academy · درس

فتح قاعدة بيانات

أنشئوا قواعد بيانات ومخازن كائنات.

فتح قاعدة بيانات درس مجاني في JavaScript Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في JavaScript Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ما هي IndexedDB؟

IndexedDB قاعدة بيانات كبيرة السعة ومعتمدة على المعاملات، مدمجة في المتصفح. وعلى خلاف localStorage (صغيرة، لا تخزن إلا السلاسل النصية، ومتزامنة)، تخزن كائنات منظمة، وتدعم الفهارس، وتعمل بشكل غير متزامن.

فتح قاعدة بيانات

تفتحون (أو تنشئون) قاعدة بيانات باستخدام indexedDB.open(name, version). ويعيد ذلك كائن طلب تُبلغ أحداثه عن النجاح أو الفشل.

const request = indexedDB.open('notes-db', 1);

أحداث الطلب

يطلق طلب الفتح أحداثًا تتعاملون معها:

  • onsuccess — قاعدة البيانات جاهزة
  • onerror — فشل الفتح
  • onupgradeneeded — يجب إنشاء المخطط أو ترقيته
request.onsuccess = (e) => {
  const db = e.target.result;
  console.log('database opened');
};
request.onerror = (e) => {
  console.log('open failed:', e.target.error);
};

onupgradeneeded

يُنفَّذ onupgradeneeded عند إنشاء قاعدة البيانات لأول مرة أو زيادة رقم إصدارها. وهذا هو المكان الوحيد الذي يمكنكم فيه تغيير المخطط (إنشاء مخازن الكائنات والفهارس أو حذفها).

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  // create object stores here
};

مخازن الكائنات

يشبه مخزن الكائنات جدولًا: فهو حاوية للسجلات. أنشئوه باستخدام db.createObjectStore(name, options) داخل onupgradeneeded.

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  db.createObjectStore('notes', { keyPath: 'id' });
};

المفتاح keyPath

يحدد keyPath الخاصية التي تمثل المفتاح الأساسي لكل كائن في IndexedDB. ويجب أن تحتوي الكائنات المخزنة على هذه الخاصية، كما يجب أن تكون المفاتيح فريدة.

db.createObjectStore('users', { keyPath: 'email' });
// Each stored user object must have a unique 'email'.

المفاتيح المتزايدة تلقائيًا

إذا لم تكن لكائناتكم مفاتيح طبيعية، فاتركوا لـ IndexedDB إنشاء مفتاح باستخدام autoIncrement: true. ويحصل كل سجل جديد على العدد الصحيح التالي.

db.createObjectStore('logs', {
  keyPath: 'id',
  autoIncrement: true
});
// id is assigned automatically on add().

التحقق من مخازن موجودة

بما أن onupgradeneeded يُنفَّذ عند كل تغيير في الإصدار، تحقّقوا من الإنشاء باستخدام db.objectStoreNames.contains لتجنب الأخطاء عند إعادة التنفيذ.

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  if (!db.objectStoreNames.contains('notes')) {
    db.createObjectStore('notes', { keyPath: 'id' });
  }
};

الاحتفاظ بمرجع db

احفظوا كائن قاعدة البيانات من onsuccess حتى تتمكن العمليات اللاحقة من استخدامه. تمر جميع عمليات القراءة والكتابة عبر مثيل db هذا.

let db;
request.onsuccess = (e) => {
  db = e.target.result; // reuse for transactions
};

معالجة عمليات الفتح المحظورة

إذا كانت علامة تبويب أخرى تُبقي إصدارًا أقدم مفتوحًا، فقد تتم blocked ترقية قاعدة البيانات. استمعوا إلى onblocked واطلبوا من المستخدم إغلاق علامات التبويب الأخرى.

request.onblocked = () => {
  console.log('Close other tabs to upgrade the database.');
};

تسلسل عملية الفتح

لفتح IndexedDB: استدعوا open باستخدام اسم وإصدار، وأنشئوا مخططكم في onupgradeneeded، ثم احصلوا على db في onsuccess. بعد ذلك، يمكنكم تشغيل معاملات لقراءة البيانات وكتابتها.

تحقق سريع

اختبروا مدى فهمكم لفتح قاعدة بيانات.

مراجعة

لقد تعلمتم كيفية فتح قاعدة بيانات IndexedDB:

  • يعيد indexedDB.open(name, version) طلبًا.
  • أنشئوا مخازن الكائنات داخل onupgradeneeded فقط.
  • يحدد keyPath المفتاح الأساسي، بينما ينشئ autoIncrement المفاتيح.
  • احفظوا db من onsuccess لاستخدامه لاحقًا.
  • تعاملوا مع onerror وonblocked.

بعد ذلك، ستتعلمون المعاملات وعمليات CRUD.

الأسئلة الشائعة

هل درس «فتح قاعدة بيانات» مجاني؟

نعم — نص درس «فتح قاعدة بيانات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة JavaScript Academy، انتقل إلى CoddyKit PRO. تتضمن دورة JavaScript Academy 4 دروس في المجموع.

ماذا ستتعلم في «فتح قاعدة بيانات»؟

أنشئوا قواعد بيانات ومخازن كائنات. تتمرن على JavaScript Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ JavaScript Academy؟

لا تُشترط خبرة سابقة. JavaScript Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «فتح قاعدة بيانات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس JavaScript Academy هذا؟

نعم. كل درس في JavaScript Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. فتح قاعدة بيانات
  2. المعاملات وCRUD
  3. الفهارس والاستعلامات
  4. إدارة الإصدارات والترقيات
← العودة إلى JavaScript Academy