IDBIndex: Methode getKey()
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die getKey()
-Methode der IDBIndex
-Schnittstelle gibt ein IDBRequest
-Objekt zurück und findet in einem separaten Thread entweder den Primärschlüssel, der dem gegebenen Schlüssel in diesem Index entspricht, oder den ersten entsprechenden Primärschlüssel, wenn key
auf einen IDBKeyRange
gesetzt ist.
Wenn ein Primärschlüssel gefunden wird, wird er als result
des Anfrageobjekts festgelegt. Beachten Sie, dass dies nicht den gesamten Datensatz zurückgibt, wie es IDBIndex.get
tut.
Syntax
getKey()
getKey(key)
Parameter
key
Optional-
Ein Schlüssel oder
IDBKeyRange
, der einen abzurufenden Datensatz identifiziert. Wenn dieser Wert null oder nicht vorhanden ist, verwendet der Browser einen ungebundenen Schlüsselbereich.
Rückgabewert
Ein IDBRequest
-Objekt, auf dem nachfolgende Ereignisse, die sich auf diese Operation beziehen, ausgelöst werden.
Wenn die Operation erfolgreich ist, ist der Wert der result
-Eigenschaft der Anfrage der Schlüssel für den ersten Datensatz, der dem gegebenen Schlüssel oder Schlüsselbereich entspricht.
Ausnahmen
Diese Methode kann eine DOMException
der folgenden Typen auslösen:
TransactionInactiveError
DOMException
-
Wird ausgelöst, wenn die Transaktion dieses
IDBIndex
inaktiv ist. DataError
DOMException
-
Wird ausgelöst, wenn der angegebene Schlüssel oder Schlüsselbereich einen ungültigen Schlüssel enthält.
InvalidStateError
DOMException
-
Wird ausgelöst, wenn der
IDBIndex
gelöscht oder entfernt wurde.
Beispiele
Im folgenden Beispiel öffnen wir eine Transaktion und ein Objekt-Store, dann erhalten wir den Index lName
aus einer einfachen Kontaktdatenbank. 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 dem Primärschlüssel sortiert sind.
myIndex.getKey('Bungle')
wird dann verwendet, um den Primärschlüssel des Datensatzes mit einem lName
von Bungle
abzurufen, und das Ergebnis dieser Anfrage wird in die Konsole geloggt, wenn der Erfolgs-Callback zurückkehrt.
Schließlich durchlaufen wir jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Für ein komplettes funktionierendes Beispiel siehe unser IndexedDB-examples Demo Repository (Beispiel live ansehen).
function displayDataByIndex() {
tableEntry.textContent = "";
const transaction = db.transaction(["contactsList"], "readonly");
const objectStore = transaction.objectStore("contactsList");
const myIndex = objectStore.index("lName");
const getKeyRequest = myIndex.getKey("Bungle");
getKeyRequest.onsuccess = () => {
console.log(getKeyRequest.result);
};
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-getkey① |
Browser-Kompatibilität
BCD tables only load in the browser
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 Cursorn:
IDBCursor
- Referenzbeispiel: Aufgabenbenachrichtigungen (Beispiel live ansehen).