تعریف دامنه در معاملات IndexedDB

IndexedDB چیست؟

IndexedDB یک استاندارد وب در حال تکامل برای ذخیره مقادیر قابل توجهی از داده های ساختاریافته در مرورگر و برای جستجوهای با کارایی بالا روی این داده ها با استفاده از شاخص ها است. به عبارت دیگر، IndexedDB یک ذخیره ساز شی است. این مانند یک پایگاه داده رابطه‌ای نیست که جداولی با ردیف‌ها و ستون‌های مجموعه دارد. این یک تفاوت مهم و اساسی است که بر نحوه طراحی و ساخت برنامه های کاربردی خود تأثیر می گذارد (بیشتر در مورد مفاهیم اساسی) .

پس چه چیزی جدید است؟

تغییرات دوستان من... ما تغییراتی داریم که اگر آنها را با تغییر نحو ساده حل نکنیم، خطاهایی ایجاد می کند.

از نسخه 17 به بعد، اگر تراکنش IndexedDB به یک فروشگاه اشیاء محدود نشود، کروم اکنون با خطا مواجه خواهد شد. از آنجایی که تمام خواندن و نوشتن داده ها در داخل تراکنش ها انجام می شود، باید یک تراکنش در یک پایگاه داده ایجاد کنیم، محدوده را مشخص کنیم (مثلاً به کدام شیء ذخیره می خواهید دسترسی داشته باشید) و نوع دسترسی (فقط خواندن یا نوشتن) را تعیین کنیم.

در کد به چه معناست؟ خوب، به جای ارسال یک آرایه خالی به database.transaction ما:

var transaction = db.transaction([], IDBTransaction.READ_ONLY);

شما باید به یک شیء خاص یا فهرستی از ذخیره‌های شیء اختصاص داشته باشید:

// all stores (equivalent to what use to be marked as empty array. )
var transaction = db.transaction(db.objectStoreNames, IDBTransaction.READ_ONLY);

// multiple stores:
var transaction = db.transaction(['ObjectStoreName1', 'ObjectStoreName2'],
    IDBTransaction.READ_ONLY);

// single store - these are equivalent
var transaction = db.transaction(['ObjectStoreName'], IDBTransaction.READ_ONLY);
var transaction = db.transaction('ObjectStoreName', IDBTransaction.READ_ONLY);

شما می توانید با استفاده از محدوده و حالت مناسب در تراکنش، دسترسی به داده ها را سرعت بخشید. در اینجا چند نکته وجود دارد: هنگام تعریف محدوده، فقط ذخیره‌های شی مورد نیاز خود را مشخص کنید. به این ترتیب، می توانید چندین تراکنش را با دامنه های غیر همپوشانی به طور همزمان اجرا کنید. فقط در صورت لزوم حالت تراکنش READ_WRITE را مشخص کنید. می‌توانید همزمان چندین تراکنش READ_ONLY با دامنه‌های همپوشانی اجرا کنید، اما می‌توانید تنها یک تراکنش READ_WRITE برای یک ذخیره‌سازی شی داشته باشید.

دیگر منابع:

بنابراین تا دفعه بعد... به هل دادن وب به مناطق نزدیک ادامه دهید.