IDBIndex: getKey() 方法

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

getKey() 方法是 IDBIndex 接口的方法,它返回一个 IDBRequest 对象,并在另一个线程中查找与该索引中的给定键相对应的主键,或者如果 key 设置为一个 IDBKeyRange,则查找第一个对应的主键。

如果找到主键,它将被设置为请求对象的 result。请注意,这不会像 IDBIndex.get 那样返回整个记录。

语法

js
getKey()
getKey(key)

参数

key 可选

用于标识要检索的记录的键或 IDBKeyRange。如果此值为空或缺失,浏览器将使用无界键范围。

返回值

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

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

异常

此方法可能会引发以下类型的 DOMException

TransactionInactiveError DOMException

如果此 IDBIndex 的事务处于非活动状态,则抛出此异常。

DataError DOMException

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

InvalidStateError DOMException

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

示例

在以下示例中,我们打开一个事务和一个对象存储,然后从简单的联系人数据库中获取索引 lName。然后,我们使用 IDBIndex.openCursor 在索引上打开一个基本游标——这与直接使用 IDBObjectStore.openCursorObjectStore 上打开游标相同,只是返回的记录是根据索引排序的,而不是根据主键排序的。

然后,myIndex.getKey('Bungle') 用于检索 lNameBungle 的记录的主键,并且当其成功回调返回时,该请求的结果将被记录到控制台。

最后,我们遍历每个记录,并将数据插入到 HTML 表格中。有关完整的示例,请参阅我们的 IndexedDB-examples 演示仓库 (查看实时示例)。

js
function displayDataByIndex() {
  tableEntry.textContent = "";
  const transaction = db.transaction(["contactsList"], "readonly");
  const objectStore = transaction.objectStore("contactsList");

  const myIndex = objectStore.index("lName");
  const getKeyRequest = myIndex.getKey("Bungle");
  getKeyRequest.onsuccess = () => {
    console.log(getKeyRequest.result);
  };

  myIndex.openCursor().onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const tableRow = document.createElement("tr");
      for (const cell of [
        cursor.value.id,
        cursor.value.lName,
        cursor.value.fName,
        cursor.value.jTitle,
        cursor.value.company,
        cursor.value.eMail,
        cursor.value.phone,
        cursor.value.age,
      ]) {
        const tableCell = document.createElement("td");
        tableCell.textContent = cell;
        tableRow.appendChild(tableCell);
      }
      tableEntry.appendChild(tableRow);

      cursor.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}

规范

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

浏览器兼容性

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

另请参阅