العمل باستخدام IndexedDB

يتناول هذا الدليل أساسيات IndexedDB API. نحن نستخدم مكتبة جيك أرشيبالدز الوعد إلى IndexedDB تشبه إلى حد كبير واجهة برمجة التطبيقات IndexedDB API، ولكنها تستخدم الوعود التي يمكنك await للحصول على بنية أكثر إيجازًا. يؤدي ذلك إلى تبسيط واجهة برمجة التطبيقات أثناء والحفاظ على هيكله.

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

IndexedDB هو نظام تخزين NoSQL واسع النطاق يسمح بتخزين ملفات عن أي شيء في متصفح المستخدم. بالإضافة إلى البحث المعتاد، إجراءات، وتدعم أداة IndexedDB المعاملات، وهي مناسبة تمامًا تخزين كميات كبيرة من البيانات المهيكلة.

تكون كل قاعدة بيانات في IndexedDB فريدة لكل مصدر. (نطاق الموقع الإلكتروني أو النطاق الفرعي عادةً)، بمعنى أنه لا يمكن الوصول إليه أو الوصول إليه بأي مصدر آخر. حدود تخزين البيانات عادةً ما تكون كبيرة، إذا كانت موجودة على الإطلاق، إلا أنّ المتصفحات المختلفة تتعامل مع الحدود المسموح بها. وإخلاء البيانات بشكل مختلف. راجِع قسم قراءة إضافية لمعرفة مزيد من المعلومات.

مصطلحات قاعدة البيانات المفهرسة

قاعدة بيانات
أعلى مستوى في IndexedDB. وهي تحتوي على متاجر الكائنات سيحتوي على البيانات التي تريد الاحتفاظ بها. يمكنك إنشاء قواعد بيانات متعددة باستخدام أيًا كانت الأسماء التي تختارها
متجر أغراض
حزمة فردية لتخزين البيانات تشبه الجداول في قواعد البيانات الارتباطية يتوفّر عادةً متجر عناصر واحد لكل نوع (وليس بيانات JavaScript.) النوع) للبيانات التي تخزنها. على عكس جداول قاعدة البيانات، لا تكفي بيانات أنواع البيانات في مخزن لا يلزم أن تكون متسقة. على سبيل المثال، إذا كان التطبيق يحتوي على متجر عناصر people يحتوي على معلومات حول ثلاثة أشخاص، أي يمكن أن تكون الخصائص العمرية للأشخاص 53 و'twenty-five' وunknown.
الفهرس
وهو نوع من مخزن الكائنات لتنظيم البيانات في مخزن كائنات آخر (يسمى مخزن عناصر مرجعي) بواسطة خاصية فردية للبيانات. يتم استخدام الفهرس لاسترداد السجلات في مخزن الكائنات من خلال هذه السمة. على سبيل المثال، إذا كنت الأشخاص، قد ترغب في جلبهم لاحقًا حسب أسمائهم أو عمرهم أو الحيوان المفضّل لديك
العملية
التفاعل مع قاعدة البيانات:
المعاملة
يشير هذا المصطلح إلى برنامج تضمين حول عملية أو مجموعة من العمليات التي تضمن قاعدة البيانات. وسلامته. في حال تعذّر تنفيذ أحد الإجراءات في معاملة، لن يتم تنفيذ أيّ منها. وتعود قاعدة البيانات إلى الحالة التي كانت عليها قبل إجراء المعاملة بدأ. يجب أن تكون جميع عمليات القراءة أو الكتابة في IndexedDB جزءًا من معاملة. يسمح هذا الإجراء بالعمليات البسيطة للقراءة والتعديل والكتابة بدون التعرض لخطر التعارضات. مع سلاسل محادثات أخرى تعمل على قاعدة البيانات في الوقت نفسه.
المؤشر
آلية لتكرار سجلات متعددة في قاعدة بيانات.

كيفية التحقق من توفُّر إمكانية استخدام IndexedDB

إنّ قاعدة البيانات المفهرسة متوافقة عالميًا تقريبًا. ومع ذلك، إذا كنت تعمل باستخدام متصفحات قديمة، فليس من الجيد أن دعم اكتشاف الميزات فقط في حالة حدوث ذلك. وتتمثل أسهل طريقة في التحقّق من window الكائن:

function indexedDBStuff () {
  // Check for IndexedDB support:
  if (!('indexedDB' in window)) {
    // Can't use IndexedDB
    console.log("This browser doesn't support IndexedDB");
    return;
  } else {
    // Do IndexedDB stuff here:
    // ...
  }
}

// Run IndexedDB code:
indexedDBStuff();

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

باستخدام IndexedDB، يمكنك إنشاء قواعد بيانات متعددة بأي أسماء تختارها. في حال حذف عدم وجود قاعدة بيانات عند محاولة فتحها، تم إنشاؤه تلقائيًا. لفتح قاعدة بيانات، استخدِم الطريقة openDB() من مكتبة idb:

import {openDB} from 'idb';

async function useDB () {
  // Returns a promise, which makes `idb` usable with async-await.
  const dbPromise = await openDB('example-database', version, events);
}

useDB();

تقوم هذه الطريقة بإرجاع وعود يتم حلها إلى كائن قاعدة بيانات. عند استخدام openDB()، أدخِل اسمًا ورقم الإصدار وكائن حدث لضبطه. قاعدة البيانات.

إليك مثال على طريقة openDB() في السياق: