IDBObjectStore: index() Methode
Baseline
Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
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
InvalidStateErrorDOMException-
Wird ausgelöst, wenn der Quellobjekt-Store gelöscht wurde oder die Transaktion für den Objekt-Store beendet ist.
NotFoundErrorDOMException-
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
Loading…
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).