Menentukan cakupan di transaksi IndexedDB

Apa yang dimaksud dengan IndexedDB?

IndexedDB adalah standar web yang terus berkembang untuk penyimpanan data terstruktur dalam jumlah yang signifikan di browser dan untuk penelusuran berperforma tinggi pada data ini menggunakan indeks. Dengan kata lain, IndexedDB adalah penyimpanan objek. Ini tidak sama dengan database relasional, yang memiliki tabel dengan baris dan kolom koleksi. Ini adalah perbedaan penting dan mendasar yang memengaruhi cara Anda mendesain dan membangun aplikasi (selengkapnya di - konsep dasar.

Jadi, apa yang baru?

Perubahan teman-teman saya... kita memiliki beberapa perubahan yang akan menghasilkan beberapa {i>error<i} jika kita tidak menanganinya dengan perubahan {i>syntax<i} sederhana.

Mulai versi 17 dan seterusnya, Chrome sekarang akan menampilkan error jika transaksi IndexedDB tidak dicakupkan ke penyimpanan objek. Karena semua pembacaan dan penulisan data dilakukan dalam transaksi, kita perlu membuat transaksi pada database, menentukan cakupan (seperti penyimpanan objek mana yang ingin Anda akses), dan menentukan jenis akses (hanya baca atau tulis).

Apa artinya dalam kode? Jadi, daripada meneruskan array kosong ke database.transaction:

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

Anda harus mencakup penyimpanan objek tertentu, atau daftar penyimpanan objek:

// 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);

Anda dapat mempercepat akses data dengan menggunakan cakupan dan mode yang tepat dalam transaksi. Berikut ini beberapa tips: Saat menentukan cakupan, tentukan hanya penyimpanan objek yang diperlukan. Dengan cara ini, Anda dapat menjalankan beberapa transaksi dengan cakupan yang tidak tumpang-tindih secara serentak. Hanya tentukan mode transaksi READ_WRITE jika diperlukan. Anda dapat secara serentak menjalankan beberapa transaksi READ_ONLY dengan cakupan yang tumpang-tindih, tetapi Anda hanya dapat memiliki satu transaksi READ_WRITE untuk penyimpanan objek.

Sumber lain:

Sampai jumpa lagi... terus dorong web untuk mendekati wilayah.