IDBObjectStore: getAll() 方法

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流瀏覽器均已支援。

getAll() 方法是 IDBObjectStore 介面的一部分,它返回一個 IDBRequest 物件,其中包含物件儲存中所有與指定引數匹配的物件;如果未提供引數,則包含物件儲存中的所有物件。

如果成功找到一個值,則會建立該值的結構化克隆,並將其設定為請求物件的結果。

此方法會產生相同的結果,用於:

  • 資料庫中不存在的記錄
  • 值為 undefined 的記錄

為了區分這些情況,您可以呼叫

  1. 使用相同鍵的 openCursor() 方法。該方法如果記錄存在則提供一個遊標,如果記錄不存在則不提供遊標。
  2. 使用相同鍵的 count() 方法,該方法將在行存在時返回 1,不存在時返回 0。

語法

js
getAll()
getAll(query)
getAll(query, count)

引數

query 可選

要查詢的鍵或 IDBKeyRange。如果未傳遞任何內容,則預設使用一個鍵範圍,該範圍會選擇此物件儲存中的所有記錄。

count 可選

指定要返回的值的數量(如果找到多個)。如果小於 0 或大於 2^32 - 1,則會丟擲 TypeError 異常。

返回值

一個 IDBRequest 物件,後續與此操作相關的事件會在此物件上觸發。

如果操作成功,請求的 result 屬性的值是一個 Array,其中包含所有匹配給定查詢的記錄的值,最多不超過 count 的值(如果提供了 count)。

異常

此方法可能會丟擲以下型別之一的DOMException

TransactionInactiveError DOMException

如果此 IDBObjectStore 的事務不活躍,則會丟擲此異常。

DataError DOMException

如果提供的鍵或鍵範圍包含無效鍵或為 null,則丟擲此異常。

InvalidStateError DOMException

如果 IDBObjectStore 已被刪除或移除,則會丟擲此異常。

TypeError

如果 count 引數不在 02^32 - 1(包含)之間,則丟擲此異常。

規範

規範
Indexed Database API 3.0
# ref-for-dom-idbobjectstore-getall①

瀏覽器相容性

另見