files/en-us/web/api/idbobjectstore/openkeycursor/index.md
{{ APIRef("IndexedDB") }}
The openKeyCursor() method of the
{{domxref("IDBObjectStore")}} interface returns an {{domxref("IDBRequest")}} object
whose result will be set to an {{domxref("IDBCursor")}} that can be used to iterate
through matching results. Used for iterating through the keys of an object store with
a cursor.
To determine if the add operation has completed successfully, listen for the
results's success event.
openKeyCursor()
openKeyCursor(query)
openKeyCursor(query, direction)
query {{optional_inline}}
direction {{optional_inline}}
next. Valid values are:
next
nextunique
prev
prevunique
An {{domxref("IDBRequest")}} object on which subsequent events related to this operation are fired.
If the operation is successful, the value of the request's {{domxref("IDBRequest.result", "result")}} property is:
null if no matching records were found.This method may raise a {{domxref("DOMException")}} of one of the following types:
InvalidStateError {{domxref("DOMException")}}
TransactionInactiveError {{domxref("DOMException")}}
DataError {{domxref("DOMException")}}
In this simple fragment we create a transaction, retrieve an object store, then use a cursor to iterate through all the records in the object store:
const transaction = db.transaction("name", "readonly");
const objectStore = transaction.objectStore("name");
const request = objectStore.openKeyCursor();
request.onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
// cursor.key contains the key of the current record being iterated through
// note that there is no cursor.value, unlike for openCursor
// this is where you'd do something with the result
cursor.continue();
} else {
// no more results
}
};
{{Specifications}}
{{Compat}}