IDBObjectStore: getAllKeys() 方法
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:
TransactionInactiveErrorDOMException-
如果此
IDBObjectStore的事务不活跃,则会抛出此异常。 DataErrorDOMException-
如果提供的键或键范围包含无效的键或为 null,则会抛出此异常。
InvalidStateErrorDOMException-
如果
IDBObjectStore已被删除或移除,则会抛出此异常。
规范
| 规范 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-getallkeys① |
浏览器兼容性
加载中…
另见
- 使用 IndexedDB
- 开始事务:
IDBDatabase - 使用事务:
IDBTransaction - 设置键的范围:
IDBKeyRange - 检索和修改数据:
IDBObjectStore - 使用游标:
IDBCursor - 参考示例:待办事项通知(查看实时示例)。