files/en-us/web/api/idbindex/name/index.md
{{ APIRef("IndexedDB") }} {{AvailableInWorkers}}
The name property of the {{domxref("IDBIndex")}}
interface contains a string which names the index.
A string specifying a name for the index.
There are a several exceptions that can occur when you attempt to change an index's name.
InvalidStateError {{domxref("DOMException")}}
"versionchange".TransactionInactiveError {{domxref("DOMException")}}
ConstraintError {{domxref("DOMException")}}
name.In the following example we open a transaction and an object store, then get the
index lName from a simple contacts database. We then open a basic cursor on
the index using {{domxref("IDBIndex.openCursor()")}} — this works the same as opening a
cursor directly on an {{domxref("IDBObjectStore")}} using
{{domxref("IDBObjectStore.openCursor", "openCursor()")}} except that the returned
records are sorted based on the index, not the primary key.
The name of the index is logged to the console: it should be returned as
lName.
Finally, we iterate through each record, inserting the data into an HTML table. For a complete working example, see our IndexedDB-examples demo repo (View the example live).
function displayDataByIndex() {
tableEntry.textContent = "";
const transaction = db.transaction(["contactsList"], "readonly");
const objectStore = transaction.objectStore("contactsList");
const myIndex = objectStore.index("lName");
console.log(myIndex.name);
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.");
}
};
}
{{Specifications}}
{{Compat}}