IDBObjectStore: index() Methode
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die index()
-Methode der IDBObjectStore
-Schnittstelle öffnet einen benannten Index im aktuellen Objekt-Store. Danach kann der Index beispielsweise dazu genutzt werden, eine Reihe von Datensätzen zu sortieren, die durch einen Cursor zurückgegeben werden.
Syntax
index(name)
Parameter
name
-
Der Name des zu öffnenden Indexes.
Rückgabewert
Ein IDBIndex
-Objekt für den Zugriff auf den Index.
Ausnahmen
InvalidStateError
DOMException
-
Wird ausgelöst, wenn der Quellobjekt-Store gelöscht wurde oder die Transaktion für den Objekt-Store beendet ist.
NotFoundError
DOMException
-
Wird ausgelöst, wenn es in der Datenbank keinen Index mit dem angegebenen (groß-/klein-schreibungsempfindlichen) Namen gibt.
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 mittels IDBIndex.openCursor
— dies funktioniert genauso wie das Öffnen eines Cursors direkt auf einem ObjectStore
mittels IDBObjectStore.openCursor
, mit dem Unterschied, dass die zurückgegebenen Datensätze basierend auf dem Index und nicht dem Primärschlüssel sortiert sind.
Schließlich iterieren wir durch jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Für ein vollständiges Arbeitsbeispiel siehe unser IDBIndex-Beispiel im 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");
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 # dom-idbobjectstore-index |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Einstellen eines Schlüsselspektrums:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursors:
IDBCursor
- Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).