IDBIndex:get() 方法

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

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

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

语法

js
get()
get(key)

参数

key 可选

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

返回值

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

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

异常

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

TransactionInactiveError DOMException

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

DataError DOMException

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

InvalidStateError DOMException

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

示例

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

然后使用 myIndex.get('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 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①

浏览器兼容性

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

另请参阅