IDBObjectStore: getKey() 方法

Baseline 已广泛支持

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

注意:此功能在 Web Workers 中可用。

IDBObjectStore 接口的 getKey() 方法返回一个 IDBRequest 对象,并在单独的线程中返回由指定查询选择的键。此方法用于从对象存储中检索特定记录。

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

语法

js
getKey(key)

参数

key

用于标识要检索的记录的键或键范围。

返回值

一个 IDBRequest 对象,后续与此操作相关的事件会在此对象上触发。

如果操作成功,请求的 result 属性的值将是第一个匹配给定键或键范围的记录的键。

异常

此方法可能会抛出以下类型之一的DOMException

InvalidStateError DOMException

如果 IDBObjectStore 已被删除或移除,则会抛出此异常。

TransactionInactiveError DOMException

如果此 IDBObjectStore 的事务不活跃,则会抛出此异常。

DataError DOMException

如果提供的键或键范围包含无效键,则会抛出此异常。

示例

js
let openRequest = indexedDB.open("telemetry");
openRequest.onsuccess = (event) => {
  let db = event.target.result;
  let store = db.transaction("net-logs").objectStore("net-logs");

  let today = new Date();
  let yesterday = new Date(today);
  yesterday.setDate(today.getDate() - 1);
  let request = store.getKey(IDBKeyRange(yesterday, today));
  request.onsuccess = (event) => {
    let when = event.target.result;
    alert(`The 1st activity in last 24 hours was occurred at ${when}`);
  };
};

规范

规范
Indexed Database API 3.0
# ref-for-dom-idbobjectstore-getkey①

浏览器兼容性

另见