IDBObjectStore: getAllKeys() 方法

Baseline 已广泛支持

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

IDBObjectStore 接口的 getAllKeys() 方法返回一个 IDBRequest 对象,该对象会检索对象存储中所有匹配指定参数的记录的键,如果未提供参数,则检索对象存储中的所有记录的键。

如果成功找到一个值,则会创建一个该值的结构化克隆,并将其设置为请求对象的结果。

此方法对于以下情况会产生相同的结果:

  • 数据库中不存在的记录
  • 值为 undefined 的记录

要区分这些情况,您需要使用相同的键调用 openCursor() 方法。该方法在记录存在时提供一个游标,在记录不存在时则不提供游标。

语法

js
getAllKeys()
getAllKeys(query)
getAllKeys(query, count)

参数

query 可选

值是 IDBKeyRange 或解析为 IDBKeyRange

count 可选

指定要返回的值的数量(如果找到多个)。如果小于 0 或大于 2^32 - 1,则会抛出 TypeError 异常。

返回值

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

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

异常

此方法可能会抛出以下类型之一的DOMException

TransactionInactiveError DOMException

如果此 IDBObjectStore 的事务不活跃,则会抛出此异常。

DataError DOMException

如果提供的键或键范围包含无效的键或为 null,则会抛出此异常。

InvalidStateError DOMException

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

规范

规范
Indexed Database API 3.0
# ref-for-dom-idbobjectstore-getallkeys①

浏览器兼容性

另见