IDBIndex: keyPath-Eigenschaft
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die schreibgeschützte Eigenschaft keyPath der Schnittstelle IDBIndex gibt den Schlüsselpfad des aktuellen Index zurück. Ist der Wert null, wird dieser Index nicht automatisch befüllt.
Wert
Jeder Datentyp, der als Schlüsselpfad verwendet werden kann.
Beispiele
Im folgenden Beispiel öffnen wir eine Transaktion und einen Objektspeicher und rufen dann den Index lName aus einer einfachen Kontaktdatenbank ab. Anschließend öffnen wir mit IDBIndex.openCursor einen einfachen Cursor für den Index. Das funktioniert genauso wie das direkte Öffnen eines Cursors für einen ObjectStore mit IDBObjectStore.openCursor, mit dem Unterschied, dass die zurückgegebenen Datensätze nach dem Index und nicht nach dem Primärschlüssel sortiert sind.
Der Schlüsselpfad des aktuellen Index wird in der Konsole ausgegeben: Als Wert sollte lName zurückgegeben werden.
Zum Schluss durchlaufen wir jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Ein vollständiges, funktionsfähiges Beispiel finden Sie in unserem Repository mit IndexedDB-Beispielen (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.keyPath);
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
| Spezifikation |
|---|
| Indexed Database API 3.0> # dom-idbindex-keypath> |
Browser-Kompatibilität
Siehe auch
- IndexedDB verwenden
- Transaktionen starten:
IDBDatabase - Transaktionen verwenden:
IDBTransaction - Einen Schlüsselbereich festlegen:
IDBKeyRange - Daten abrufen und ändern:
IDBObjectStore - Cursor verwenden:
IDBCursor - Referenzbeispiel: To-do Notifications (Beispiel live ansehen).