0Pricing
JavaScript Academy · درس

الفهارس والاستعلامات

استعلموا عن البيانات بكفاءة باستخدام الفهارس.

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

لماذا نستخدم الفهارس؟

بشكل افتراضي، لا يمكنكم البحث عن السجلات إلا باستخدام مفتاحها الأساسي. يتيح لكم الفهرس الاستعلام باستخدام خاصية أخرى بكفاءة، مثل العثور على جميع المستخدمين الذين يحملون اسم عائلة معينًا.

إنشاء فهرس

أنشئوا الفهارس داخل onupgradeneeded مباشرةً بعد إنشاء مخزن البيانات، باستخدام store.createIndex(name, keyPath, options).

request.onupgradeneeded = (e) => {
  const db = e.target.result;
  const store = db.createObjectStore('users', { keyPath: 'id' });
  store.createIndex('byEmail', 'email', { unique: true });
};

الفهارس الفريدة وغير الفريدة

يفرض الخيار unique عدم مشاركة سجلين في قيمة الفهرس نفسها. استخدموا unique: false، وهي القيمة الافتراضية، عندما يمكن لعدة سجلات مشاركة قيمة واحدة، مثل اسم مدينة.

store.createIndex('byCity', 'city', { unique: false });
store.createIndex('byEmail', 'email', { unique: true });

الاستعلام من خلال فهرس

احصلوا على الفهرس من مخزن بيانات داخل معاملة، ثم استدعوا get أو getAll عليه باستخدام قيمة الخاصية المفهرسة.

const tx = db.transaction('users', 'readonly');
const index = tx.objectStore('users').index('byEmail');
const req = index.get('ada@example.com');
req.onsuccess = () => console.log(req.result);

getAll

تعيد getAll() كل سجل مطابق في صورة مصفوفة ضمن طلب واحد، ما يجعلها أبسط من التكرار باستخدام مؤشر للنتائج المتوسطة الحجم.

const index = store.index('byCity');
const req = index.getAll('Paris');
req.onsuccess = () => {
  console.log('found', req.result.length, 'users in Paris');
};

نطاقات المفاتيح

يصف IDBKeyRange نطاقًا من المفاتيح لاستخدامه في استعلامات النطاق. ومن بين الدوال المساعدة only وlowerBound وupperBound وbound.

const range = IDBKeyRange.bound(18, 65); // ages 18..65
const index = store.index('byAge');
index.getAll(range);

خيارات الحدود

يمكن لـ IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen) استبعاد نقطتي النهاية. وتكون الحدود المفتوحة حصرية.

// 18 inclusive, 65 exclusive:
const range = IDBKeyRange.bound(18, 65, false, true);
// lowerBound(10) => keys >= 10
// upperBound(10, true) => keys < 10

المؤشرات

للتعامل مع مجموعات النتائج الكبيرة أو التكرار المخصص، افتحوا مؤشرًا باستخدام index.openCursor(range). فهو يمر على السجلات المطابقة واحدًا تلو الآخر، ولذلك لا تحتاجون إلى تحميلها كلها في الذاكرة.

const req = store.index('byCity').openCursor();
req.onsuccess = (e) => {
  const cursor = e.target.result;
  if (cursor) {
    console.log(cursor.value);
    cursor.continue(); // move to next match
  }
};

عدّ النتائج المطابقة

تعيد index.count(range) عدد السجلات المطابقة دون جلبها، ولذلك فهي سريعة وتستهلك قدرًا قليلًا من الذاكرة.

const req = store.index('byCity').count('Paris');
req.onsuccess = () => console.log('count:', req.result);

الحصول على المفاتيح فقط

تعيد getAllKeys ومؤشر المفاتيح المفاتيح الأساسية للسجلات المطابقة فقط، وهذا مفيد عندما تحتاجون إلى المراجع دون الكائنات كاملةً.

const req = store.index('byCity').getAllKeys('Paris');
req.onsuccess = () => console.log('keys:', req.result);

مراجعة الاستعلامات

تحوّل الفهارس IndexedDB إلى مخزن يمكن الاستعلام منه: أنشئوها في onupgradeneeded، ثم استخدموا get وgetAll ونطاقات المفاتيح والمؤشرات لجلب السجلات التي تحتاجون إليها بالضبط.

اختبار سريع

اختبروا مدى فهمكم للفهارس والاستعلامات.

مراجعة

لقد تعلمتم الفهارس والاستعلامات:

  • أنشئوا الفهارس في onupgradeneeded باستخدام createIndex.
  • يفرض الخيار unique تميّز القيم.
  • أجروا الاستعلامات باستخدام index.get / getAll.
  • يتيح IDBKeyRange إجراء استعلامات النطاق.
  • تكرّر المؤشرات على المجموعات الكبيرة، بينما تحصي count النتائج المطابقة.

التالي: إدارة الإصدارات والترقيات.

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

هل درس «الفهارس والاستعلامات» مجاني؟

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

ماذا ستتعلم في «الفهارس والاستعلامات»؟

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

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

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

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

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

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

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

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

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