IDBObjectStore: get() method
============================

 The **`get()`** method of the `IDBObjectStore`
 interface returns an `IDBRequest` object, and, in a separate thread,
 returns the object selected by the specified key. This is for retrieving
 specific records from an object store.

 If a value is successfully found, then a structured clone of it is created and set as
 the `result` of the
 request object.


**Note:** This method produces the same result for: a) a record that doesn't exist in the database and b) a record that has an undefined value.
 To tell these situations apart, call the `openCursor()` method with the same key. That method provides a cursor if the record exists, and no cursor if it does not.


**Note:** This feature is available in Web Workers

Syntax
------


```js
get(key)
```

### Parameters

`key`

The key or key range that identifies the record to be retrieved.

### Return value

An `IDBRequest` object on which subsequent events related to this operation are fired.

If the operation is successful, the value of the request's `result` property is the value of the first record matching the given key or key range.

### Exceptions

This method may raise a `DOMException` of one of the following types:

`TransactionInactiveError` `DOMException`

Thrown if this `IDBObjectStore`'s transaction is inactive.

`DataError` `DOMException`

Thrown if key or key range provided contains an invalid key.

`InvalidStateError` `DOMException`

Thrown if the `IDBObjectStore` has been deleted or removed.

Examples
--------

 In the following code snippet, we open a read/write transaction on our database and get
 one specific record from object store using `get()` — a sample record with
 the key "Walk dog". Once this data object is retrieved, you could then update it using
 normal JavaScript, then put it back into the database using a
 `IDBObjectStore.put` operation. For a full working example, see our To-do Notifications app
 (view example live).


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

DBOpenRequest.onsuccess = (event) => {
  note.innerHTML += "<li>Database initialized.</li>";

  // 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.innerHTML += "<li>Transaction completed.</li>";
  };

  transaction.onerror = (event) => {
    note.innerHTML += `<li>Transaction not opened due to error: ${transaction.error}</li>`;
  };

  // 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.innerHTML += "<li>Request successful.</li>";

    const myRecord = objectStoreRequest.result;
  };
}
```

Specifications
--------------

| Specification |
| --- |
| Indexed Database API 3.0 # ref-for-dom-idbobjectstore-get① |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* Using IndexedDB
* Starting transactions: `IDBDatabase`
* Using transactions: `IDBTransaction`
* Setting a range of keys: `IDBKeyRange`
* Retrieving and making changes to your data: `IDBObjectStore`
* Using cursors: `IDBCursor`
* Reference example: To-do Notifications (View the example live).