IDBIndex: name Eigenschaft
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die name
-Eigenschaft der IDBIndex
-Schnittstelle enthält einen String, der den Index benennt.
Wert
Ein String, der einen Namen für den Index angibt.
Ausnahmen
Es gibt einige Ausnahmen, die auftreten können, wenn Sie versuchen, den Namen eines Indexes zu ändern.
InvalidStateError
DOMException
-
Wird ausgelöst, wenn der Index oder sein Objekt-Store gelöscht wurde oder wenn die aktuelle Transaktion keine Upgrade-Transaktion ist. Sie können Indizes nur während Upgrade-Transaktionen umbenennen, d.h. wenn der Modus
"versionchange"
ist. TransactionInactiveError
DOMException
-
Wird ausgelöst, wenn die aktuelle Transaktion nicht aktiv ist.
ConstraintError
DOMException
-
Wird ausgelöst, wenn ein Index bereits den angegebenen
name
verwendet.
Beispiele
Im folgenden Beispiel öffnen wir eine Transaktion und einen Objekt-Store, dann holen wir den Index lName
aus einer einfachen Kontaktdatenbank. Anschließend öffnen wir einen einfachen Cursor auf dem Index mit IDBIndex.openCursor()
— dies funktioniert genauso wie das direkte Öffnen eines Cursors auf einem IDBObjectStore
mit openCursor()
, außer dass die zurückgegebenen Datensätze basierend auf dem Index und nicht dem Primärschlüssel sortiert sind.
Der Name des Indexes wird in die Konsole protokolliert: es sollte als lName
zurückgegeben werden.
Schließlich iterieren wir durch jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Für ein vollständiges funktionierendes Beispiel, siehe unser IndexedDB-examples Demo-Repo (Beispiel live ansehen).
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.");
}
};
}
Spezifikationen
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbindex-name① |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegen eines Schlüsselbereichs:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursors:
IDBCursor
- Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).