IDBObjectStore: getAll() 方法
getAll() 方法是 IDBObjectStore 接口的一部分,它返回一个 IDBRequest 对象,其中包含对象存储中所有与指定参数匹配的对象;如果未提供参数,则包含对象存储中的所有对象。
如果成功找到一个值,则会创建该值的结构化克隆,并将其设置为请求对象的结果。
此方法会产生相同的结果,用于:
- 数据库中不存在的记录
- 值为 undefined 的记录
为了区分这些情况,您可以调用
- 使用相同键的
openCursor()方法。该方法如果记录存在则提供一个游标,如果记录不存在则不提供游标。 - 使用相同键的
count()方法,该方法将在行存在时返回 1,不存在时返回 0。
语法
js
getAll()
getAll(query)
getAll(query, count)
参数
query可选-
要查询的键或
IDBKeyRange。如果未传递任何内容,则默认使用一个键范围,该范围会选择此对象存储中的所有记录。 count可选-
指定要返回的值的数量(如果找到多个)。如果小于
0或大于2^32 - 1,则会抛出TypeError异常。
返回值
一个 IDBRequest 对象,后续与此操作相关的事件会在此对象上触发。
如果操作成功,请求的 result 属性的值是一个 Array,其中包含所有匹配给定查询的记录的值,最多不超过 count 的值(如果提供了 count)。
异常
此方法可能会抛出以下类型之一的DOMException:
TransactionInactiveErrorDOMException-
如果此
IDBObjectStore的事务不活跃,则会抛出此异常。 DataErrorDOMException-
如果提供的键或键范围包含无效键或为 null,则抛出此异常。
InvalidStateErrorDOMException-
如果
IDBObjectStore已被删除或移除,则会抛出此异常。 TypeError-
如果
count参数不在0和2^32 - 1(包含)之间,则抛出此异常。
规范
| 规范 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-getall① |
浏览器兼容性
加载中…
另见
- 使用 IndexedDB
- 开始事务:
IDBDatabase - 使用事务:
IDBTransaction - 设置键的范围:
IDBKeyRange - 检索和修改数据:
IDBObjectStore - 使用游标:
IDBCursor - 参考示例:待办事项通知(查看实时示例)。