定義 IndexedDB 交易中的範圍

Ido Green

什麼是 IndexedDB?

IndexedDB 是持續進化的網路標準,可讓使用者在瀏覽器中儲存大量結構化資料,以及運用索引分析這項資料的高效能搜尋。換句話說,IndexedDB 是物件存放區。這不同於包含集合資料列和資料欄的關聯資料庫。這個重大差異會影響您設計及建構應用程式的方式 (詳情請參閱基本概念)。

有什麼新功能呢?

改變我的朋友... 我們進行的部分變更,如果透過簡單的語法變更無法處理,這些變更就會擲回某些錯誤。

現在,自 17 版起,如果 IndexedDB 交易範圍不是物件存放區,Chrome 會擲回錯誤。所有讀取和寫入資料都是在交易中完成,因此我們需要在資料庫上建立交易、指定範圍 (例如您想存取哪些物件) 以及決定存取的類型 (唯讀或寫入)。

在程式碼中代表什麼意思? 沒問題,而不是將空白陣列傳送至我們的 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 交易。

其他來源:

下次見...繼續將網路推向附近的地域。