IDBObjectStore: getAll() 方法

**getAll()** 方法是 IDBObjectStore 接口的方法,它返回一个 IDBRequest 对象,其中包含与指定参数匹配的对象存储中的所有对象,如果未提供参数,则包含存储中的所有对象。

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

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

  • 数据库中不存在的记录
  • 具有未定义值的记录

要区分这些情况,可以调用

  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①

浏览器兼容性

BCD 表仅在启用了 JavaScript 的浏览器中加载。

另请参阅