IDBIndex: objectStore Eigenschaft
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 objectStore
-Eigenschaft des IDBIndex
Interfaces gibt den Objektspeicher zurück, auf den der aktuelle Index verweist.
Wert
Ein IDBObjectStore
.
Beispiele
Im folgenden Beispiel öffnen wir eine Transaktion und einen Objektspeicher und erhalten dann den
Index lName
aus einer einfachen Kontaktdatenbank. Anschließend öffnen wir einen grundlegenden Cursor auf
dem Index mit IDBIndex.openCursor
. Dies funktioniert genauso, wie einen
Cursor direkt auf einem ObjectStore
mit
IDBObjectStore.openCursor
zu öffnen, außer dass die zurückgegebenen Datensätze basierend auf dem Index und nicht dem Primärschlüssel sortiert sind.
Der aktuelle Objektspeicher wird in die Konsole protokolliert: Es sollte etwas wie folgendes zurückgegeben werden:
IDBObjectStore { name: "contactsList", keyPath: "id", indexNames: DOMStringList[7], transaction: IDBTransaction, autoIncrement: false }
Schließlich iterieren wir durch jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Für ein vollständig funktionierendes Beispiel siehe unser IndexedDB-Beispiele-Demo-Repo (Das 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
Specification |
---|
Indexed Database API 3.0> # ref-for-dom-idbindex-objectstore①> |
Browser-Kompatibilität
Loading…
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
- Beispielreferenz: To-do-Benachrichtigungen (Das Beispiel live ansehen).