IDBIndex: get() 方法

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

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

IDBIndex 接口的 get() 方法返回一个 IDBRequest 对象,并在一个单独的线程中,查找被引用的对象存储中与给定键相对应的对象,或者如果 key 被设置为 IDBKeyRange,则查找第一个匹配的对象。

如果找到对象,则会创建一个该对象的结构化克隆,并将其设置为请求对象的 result 属性:这将返回与键关联的记录。

语法

js
get()
get(key)

参数

key 可选

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

返回值

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

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

异常

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

TransactionInactiveError DOMException

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

DataError DOMException

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

InvalidStateError DOMException

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

示例

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

然后使用 myIndex.get('Bungle') 来检索 lNameBungle 的记录,并在成功回调返回时将其结果记录到控制台。

最后,我们遍历每条记录,并将数据插入 HTML 表中。有关完整的可运行示例,请参阅我们的 IndexedDB-examples demo 仓库在线查看示例)。

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

  const myIndex = objectStore.index("lName");
  const getRequest = myIndex.get("Bungle");
  getRequest.onsuccess = () => {
    console.log(getRequest.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-get①

浏览器兼容性

另见