IDBObjectStore: getAll() 方法

Baseline 已广泛支持

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

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

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

此方法会产生相同的结果,用于:

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

为了区分这些情况,您可以调用

  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①

浏览器兼容性

另见