IDBObjectStore:get() 方法

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

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

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

注意:此方法对以下两种情况产生相同的结果:a) 数据库中不存在的记录;b) 值为 undefined 的记录。要区分这两种情况,请使用相同的键调用 openCursor() 方法。如果记录存在,该方法会提供一个游标;如果记录不存在,则不会提供游标。

语法

js
get(key)

参数

key

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

返回值

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

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

异常

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

TransactionInactiveError DOMException

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

DataError DOMException

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

InvalidStateError DOMException

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

示例

在以下代码片段中,我们对数据库打开了一个读写事务,并使用 get() 从对象存储中获取了一条特定记录——一条键为“Walk dog”的示例记录。检索到此数据对象后,您可以使用普通的 JavaScript 更新它,然后使用 IDBObjectStore.put 操作将其放回数据库中。有关完整的示例,请参阅我们的 待办事项通知 应用(查看示例)。

js
// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

  // store the result of opening the database in the db variable.
  // This is used a lot below
  db = DBOpenRequest.result;

  // Run the getData() function to get the data from the database
  getData();
};

function getData() {
  // open a read/write db transaction, ready for retrieving the data
  const transaction = db.transaction(["toDoList"], "readwrite");

  // report on the success of the transaction completing, when everything is done
  transaction.oncomplete = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      "Transaction completed.";
  };

  transaction.onerror = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      `Transaction not opened due to error: ${transaction.error}`;
  };

  // create an object store on the transaction
  const objectStore = transaction.objectStore("toDoList");

  // Make a request to get a record by key from the object store
  const objectStoreRequest = objectStore.get("Walk dog");

  objectStoreRequest.onsuccess = (event) => {
    // report the success of our request
    note.appendChild(document.createElement("li")).textContent =
      "Request successful.";

    const myRecord = objectStoreRequest.result;
  };
}

规范

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

浏览器兼容性

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

另请参阅