IDBIndex: getAll() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

getAll() 方法是 IDBIndex 接口的一部分,用于检索索引中的所有对象。

访问游标的 value 属性会产生性能开销,因为对象是惰性创建的。为了使用像 getAll() 这样的功能,浏览器需要一次性创建所有对象。如果您只对查看每个键感兴趣,那么使用 游标 会更有效。但是,如果您想获取对象存储中所有对象的数组,则应该使用 getAll()

语法

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

参数

query 可选

用于标识要检索的记录的键或 IDBKeyRange。如果此值为空或缺失,浏览器将使用无界键范围。

count 可选

要返回的记录数。如果此值超过了查询中的记录数,浏览器将仅检索查询到的记录。如果它低于 0 或大于 2^32 - 1,则会抛出 TypeError 异常。

返回值

一个 IDBRequest 对象,后续与此操作相关的事件会在此对象上触发。

如果操作成功,请求的 result 属性的值是所有匹配给定查询的记录值的 Array,最多可达 count 值(如果提供了 count)。

异常

此方法可能会引发以下类型的 DOMException

TransactionInactiveError DOMException

如果此 IDBIndex 的事务处于非活动状态,则会抛出此异常。

InvalidStateError DOMException

如果 IDBIndex 已被删除或移除,则会抛出此异常。

如果 count 参数不是包含在 02^32 - 1 之间,则会抛出 TypeError 异常。

示例

js
const myIndex = objectStore.index("index");
const getAllRequest = myIndex.getAll();
getAllRequest.onsuccess = () => {
  console.log(getAllRequest.result);
};

规范

规范
Indexed Database API 3.0
# ref-for-dom-idbindex-getall①

浏览器兼容性

另见