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①

瀏覽器相容性

另見