IDBIndex
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.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die Schnittstelle IDBIndex der IndexedDB API bietet asynchronen Zugriff auf einen Index in einer Datenbank. Ein Index ist eine Art von Objekt-Store zum Nachschlagen von Datensätzen in einem anderen Objekt-Store, dem sogenannten referenzierten Objekt-Store. Diese Schnittstelle wird verwendet, um Daten abzurufen.
Sie können Datensätze in einem Objekt-Store über den Primärschlüssel oder durch die Verwendung eines Indexes abrufen. Ein Index ermöglicht es Ihnen, Datensätze in einem Objekt-Store anhand von Eigenschaften der Werte in den Datensätzen der Objekt-Stores abzurufen, die nicht der Primärschlüssel sind.
Der Index ist ein persistenten Key-Value-Speicher, wobei der Wertteil seiner Datensätze der Schlüsselteil eines Datensatzes im referenzierten Objekt-Store ist. Die Datensätze in einem Index werden automatisch gefüllt, wann immer Datensätze im referenzierten Objekt-Store eingefügt, aktualisiert oder gelöscht werden. Jeder Datensatz in einem Index kann nur auf einen Datensatz im referenzierten Objekt-Store verweisen, aber mehrere Indizes können denselben Objekt-Store referenzieren. Wenn sich der Objekt-Store ändert, werden alle Indizes, die auf den Objekt-Store verweisen, automatisch aktualisiert.
Sie können eine Menge von Schlüsseln innerhalb eines Bereichs abrufen. Um mehr zu erfahren, sehen Sie sich IDBKeyRange an.
Instanz-Eigenschaften
IDBIndex.isAutoLocaleSchreibgeschützt Nicht standardisiert Veraltet-
Gibt einen booleschen Wert zurück, der angibt, ob der Index bei seiner Erstellung einen
locale-Wert vonautoangegeben hatte (siehe denoptions-Parameter zuIDBObjectStore.createIndex()). IDBIndex.localeSchreibgeschützt Nicht standardisiert Veraltet-
Gibt die Locale des Indexes zurück (zum Beispiel
en-USoderpl), wenn bei seiner Erstellung einlocale-Wert angegeben wurde (siehe denoptions-Parameter zuIDBObjectStore.createIndex()). IDBIndex.name-
Der Name dieses Indexes.
IDBIndex.objectStoreSchreibgeschützt-
Der Name des Objekt-Stores, auf den dieser Index verweist.
IDBIndex.keyPathSchreibgeschützt-
Der Schlüsselpfad dieses Indexes. Wenn null, wird dieser Index nicht automatisch gefüllt.
IDBIndex.multiEntrySchreibgeschützt-
Beeinflusst das Verhalten des Indexes, wenn das Ergebnis der Auswertung des Schlüsselpfads des Indexes ein Array ergibt. Wenn
true, gibt es einen Datensatz im Index für jedes Element in einem Array von Schlüsseln. Wennfalse, gibt es einen Datensatz für jeden Schlüssel, der ein Array ist. IDBIndex.uniqueSchreibgeschützt-
Wenn
true, erlaubt dieser Index keine doppelten Werte für einen Schlüssel.
Instanz-Methoden
Erbt von: EventTarget
IDBIndex.count()-
Gibt ein
IDBRequest-Objekt zurück und liefert in einem separaten Thread die Anzahl der Datensätze innerhalb eines Schlüsselbereichs zurück. IDBIndex.get()-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread entweder den Wert im referenzierten Objekt-Store, der dem angegebenen Schlüssel entspricht, oder den ersten entsprechenden Wert, wennkeyeinIDBKeyRangeist. IDBIndex.getKey()-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread entweder den angegebenen Schlüssel oder den Primärschlüssel, wennkeyeinIDBKeyRangeist. IDBIndex.getAll()-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Werte im referenzierten Objekt-Store, die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wennkeyeinIDBKeyRangeist. IDBIndex.getAllKeys()-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Schlüssel im referenzierten Objekt-Store, die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wennkeyeinIDBKeyRangeist. IDBIndex.getAllRecords()Experimentell-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Datensätze im referenzierten Objekt-Store (einschließlich Index-Schlüssel, Primärschlüssel und Werte), die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wennkeyeinIDBKeyRangeist. IDBIndex.openCursor()-
Gibt ein
IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen Cursor über den angegebenen Schlüsselbereich. IDBIndex.openKeyCursor()-
Gibt ein
IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen Cursor über den durch diesen Index angeordneten Schlüsselbereich.
Beispiel
Im folgenden Beispiel öffnen wir eine Transaktion und einen Objekt-Store, dann erhalten wir den Index lName aus einer einfachen Kontakt-Datenbank. Wir öffnen dann einen grundlegenden Cursor auf dem Index mit IDBIndex.openCursor — dies funktioniert genauso wie das Öffnen eines Cursors direkt auf einem ObjectStore mit IDBObjectStore.openCursor, außer dass die zurückgegebenen Datensätze basierend auf dem Index und nicht auf 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 komplett funktionierendes Beispiel sehen Sie sich unser IndexedDB-Examples-Demo-Repo an (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> # index-interface> |
Browser-Kompatibilität
Loading…
Siehe auch
- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase - Verwendung von Transaktionen:
IDBTransaction - Festlegung eines Schlüsselbereichs:
IDBKeyRange - Abrufen und Ändern Ihrer Daten:
IDBObjectStore - Verwendung von Cursors:
IDBCursor - Referenzbeispiel: To-do Notifications (Beispiel live ansehen).