IDBIndex: get()-Methode
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die get()
-Methode der IDBIndex
-Schnittstelle gibt ein IDBRequest
-Objekt zurück und sucht in einem separaten Thread entweder den Wert im referenzierten Objekt-Store, der dem angegebenen Schlüssel entspricht, oder den ersten entsprechenden Wert, wenn key
auf ein IDBKeyRange
gesetzt ist.
Wenn ein Wert gefunden wird, wird ein strukturierter Klon davon erstellt und als result
des Anforderungsobjekts festgelegt: dies gibt den Datensatz zurück, mit dem der Schlüssel verknüpft ist.
Syntax
get()
get(key)
Parameter
key
Optional-
Ein Schlüssel oder
IDBKeyRange
, der den 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 im Zusammenhang mit diesem Vorgang ausgelöst werden.
Wenn der Vorgang erfolgreich ist, ist der Wert der result
-Eigenschaft der Anfrage der Wert des ersten Datensatzes, der mit dem angegebenen Schlüssel oder Schlüsselbereich übereinstimmt.
Ausnahmen
Diese Methode kann eine DOMException
von einem der folgenden Typen auslösen:
TransactionInactiveError
DOMException
-
Wird ausgelöst, wenn die Transaktion dieses
IDBIndex
inaktiv ist. DataError
DOMException
-
Wird ausgelöst, wenn der bereitgestellte 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 einen Objekt-Store und rufen dann den Index lName
aus einer einfachen Kontaktdatenbank ab. 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.get('Bungle')
wird dann verwendet, um den Datensatz mit einem lName
von Bungle
abzurufen, und das Ergebnis dieser Anfrage wird in der Konsole protokolliert, wenn der Erfolg-Callback zurückkehrt.
Schließlich iterieren wir durch jeden Datensatz und fügen die Daten in eine HTML-Tabelle ein. Für ein vollständiges funktionierendes Beispiel siehe unser IndexedDB-examples Demo-Repo (Beispiel live ansehen).
function displayDataByIndex() {
tableEntry.textContent = "";
const transaction = db.transaction(["contactsList"], "readonly");
const objectStore = transaction.objectStore("contactsList");
const myIndex = objectStore.index("lName");
const getRequest = myIndex.get("Bungle");
getRequest.onsuccess = () => {
console.log(getRequest.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-get① |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegen eines Schlüsselbereichs:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Cursors verwenden:
IDBCursor
- Referenzbeispiel: To-do Notifications (Beispiel live ansehen).