IDBIndex: objectStore-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 objectStore der Schnittstelle IDBIndex gibt den Object Store zurück, auf den der aktuelle Index verweist.
Wert
Ein IDBObjectStore.
Beispiele
Im folgenden Beispiel öffnen wir eine Transaktion und einen Object Store und rufen dann den Index lName aus einer einfachen Kontaktdatenbank ab. Anschließend öffnen wir mit IDBIndex.openCursor einen Cursor auf dem Index. Dies funktioniert genauso wie das direkte Öffnen eines Cursors auf einem 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 aktuelle Object Store wird in der Konsole ausgegeben. Die Ausgabe sollte etwa so aussehen:
IDBObjectStore { name: "contactsList", keyPath: "id", indexNames: DOMStringList[7], transaction: IDBTransaction, autoIncrement: false }
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 Demo-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.objectStore);
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> # ref-for-dom-idbindex-objectstore①> |
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).