IDBIndex: getAll() 方法
getAll() 方法是 IDBIndex 接口的一部分,用于检索索引中的所有对象。
访问游标的 value 属性会产生性能开销,因为对象是惰性创建的。为了使用像 getAll() 这样的功能,浏览器需要一次性创建所有对象。如果您只对查看每个键感兴趣,那么使用 游标 会更有效。但是,如果您想获取对象存储中所有对象的数组,则应该使用 getAll()。
语法
js
getAll()
getAll(query)
getAll(query, count)
参数
query可选-
用于标识要检索的记录的键或
IDBKeyRange。如果此值为空或缺失,浏览器将使用无界键范围。 count可选-
要返回的记录数。如果此值超过了查询中的记录数,浏览器将仅检索查询到的记录。如果它低于
0或大于2^32 - 1,则会抛出TypeError异常。
返回值
一个 IDBRequest 对象,后续与此操作相关的事件会在此对象上触发。
如果操作成功,请求的 result 属性的值是所有匹配给定查询的记录值的 Array,最多可达 count 值(如果提供了 count)。
异常
此方法可能会引发以下类型的 DOMException
TransactionInactiveErrorDOMException-
如果此
IDBIndex的事务处于非活动状态,则会抛出此异常。 InvalidStateErrorDOMException-
如果
IDBIndex已被删除或移除,则会抛出此异常。
如果 count 参数不是包含在 0 和 2^32 - 1 之间,则会抛出 TypeError 异常。
示例
js
const myIndex = objectStore.index("index");
const getAllRequest = myIndex.getAll();
getAllRequest.onsuccess = () => {
console.log(getAllRequest.result);
};
规范
| 规范 |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbindex-getall① |
浏览器兼容性
加载中…
另见
- 使用 IndexedDB
- 开始事务:
IDBDatabase - 使用事务:
IDBTransaction - 设置键的范围:
IDBKeyRange - 检索和修改数据:
IDBObjectStore - 使用游标:
IDBCursor - 参考示例:待办事项通知(查看实时示例)。