IDBIndex: getAllRecords()-Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more browser support for this feature? Tell us why.
Die Methode getAllRecords() der Schnittstelle IDBIndex ruft alle Datensätze aus dem Index ab, einschließlich Indexschlüsseln, Primärschlüsseln und Werten.
getAllRecords() kombiniert praktisch die Funktionalität von getAllKeys() und getAll(), indem Primärschlüssel und Werte gleichzeitig aufgelistet werden. Dadurch können bestimmte Datenabrufe deutlich schneller sein als Alternativen wie die Iteration mit Cursorn.
Syntax
getAllRecords()
getAllRecords(options)
Parameter
Ein Optionsobjekt, das folgende Eigenschaften enthalten kann:
queryOptional-
Ein Schlüssel oder ein
IDBKeyRange, der die abzurufenden Datensätze bestimmt. Ist dieser Wertnulloder nicht angegeben, verwendet der Browser einen unbegrenzten Schlüsselbereich. countOptional-
Die Anzahl der zurückzugebenden Datensätze. Übersteigt dieser Wert die Anzahl der Datensätze, die der Abfrage entsprechen, ruft der Browser nur diese Datensätze ab. Ist der Wert kleiner als
0oder größer als2^32 - 1, wird eineTypeError-Ausnahme ausgelöst. directionOptional-
Ein Aufzählungswert, der die Richtung angibt, in der die Datensätze durchlaufen werden. Mögliche Werte sind:
next-
Die Datensätze werden vom Anfang an in aufsteigender Schlüsselreihenfolge durchlaufen. Dies ist der Standardwert.
nextunique-
Die Datensätze werden vom Anfang an in aufsteigender Schlüsselreihenfolge durchlaufen. Für jeden Schlüssel mit mehreren Datensätzen wird nur der Datensatz zurückgegeben, der dem Anfang am nächsten liegt.
prev-
Die Datensätze werden vom Ende an in absteigender Schlüsselreihenfolge durchlaufen.
prevunique-
Die Datensätze werden vom Ende an in absteigender Schlüsselreihenfolge durchlaufen. Für jeden Schlüssel mit mehreren Datensätzen wird nur der Datensatz zurückgegeben, der dem Anfang am nächsten liegt.
Rückgabewert
Ein IDBRequest-Objekt, auf dem nachfolgende Ereignisse im Zusammenhang mit diesem Vorgang ausgelöst werden.
Bei erfolgreichem Abschluss des Vorgangs enthält die Eigenschaft result der Anfrage ein Array aus IDBRecord-Instanzen. Diese repräsentieren alle Datensätze, die der angegebenen Abfrage entsprechen, bis zur durch count festgelegten Anzahl (sofern angegeben).
Jede IDBRecord-Instanz enthält die folgenden Eigenschaften:
key-
Ein Wert, der den Schlüssel des Datensatzes im Index repräsentiert.
primaryKey-
Ein Wert, der den Schlüssel des Datensatzes im zugehörigen
IDBObjectStoredes Index repräsentiert. value-
Ein Wert, der den Wert des Datensatzes repräsentiert.
Ausnahmen
Diese Methode kann eine DOMException der folgenden Typen auslösen:
InvalidStateErrorDOMException-
Wird ausgelöst, wenn der
IDBIndexoder sein zugehörigerIDBObjectStoregelöscht oder entfernt wurde. TransactionInactiveErrorDOMException-
Wird ausgelöst, wenn die Transaktion dieses
IDBIndexinaktiv ist. TypeError-
Wird ausgelöst, wenn der Parameter
countnicht im Bereich von0bis einschließlich2^32 - 1liegt.
Beispiele
>Grundlegende Verwendung
Dieses Beispiel fragt einen IDBIndex nach bis zu 100 Datensätzen ab, deren lastName-Werte nach "Smith" kommen. Die Ergebnisse werden in umgekehrter Reihenfolge sortiert.
Der Code erstellt zunächst eine Transaktion für eine IDBDatabase namens db (der Code zum Öffnen der Datenbank ist ausgelassen). Anschließend verwendet er die Transaktion, um einen IDBObjectStore mit einer Kontaktliste und daraus einen IDBIndex für die Eigenschaft lastName abzurufen.
Danach ruft er getAllRecords() für den Index auf und erhält eine IDBRequest-Instanz.
Dieser Anfrage werden Event-Listener für die Ereignisse success und error hinzugefügt.
Bei Erfolg wird das Ergebnis event.target.result protokolliert (es ist auch als request.result verfügbar).
Dieses Ergebnis enthält ein Array von IDBRecord-Instanzen.
Beachten Sie, dass key und primaryKey in jedem Datensatz unterschiedliche Werte haben können, da die Abfrage auf einem IDBIndex ausgeführt wird: key ist der Indexschlüssel (hier lastName), während primaryKey der Schlüssel des Datensatzes im Object Store ist.
// Create a transaction on the database and use it to get the contained store
const transaction = db.transaction(["contactsList"], "readonly");
const objectStore = transaction.objectStore("contactsList");
const myIndex = objectStore.index("lastName");
const query = IDBKeyRange.lowerBound("Smith", true);
const request = myIndex.getAllRecords({
query,
count: 100,
direction: "prev",
});
request.addEventListener("success", (event) => {
const myRecords = event.target.result; // Array of IDBRecord instances
console.log(myRecords);
});
request.addEventListener("error", (event) => {
console.error("Error retrieving records:", event.target.error);
});
Spezifikationen
| Spezifikation |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbindex-getallrecords①> |
Browser-Kompatibilität
Siehe auch
IDBIndex.getAll(),IDBIndex.getAllKeys()- IndexedDB verwenden
- Transaktionen starten:
IDBDatabase - Transaktionen verwenden:
IDBTransaction - Einen Schlüsselbereich festlegen:
IDBKeyRange - Daten abrufen und ändern:
IDBObjectStore - Cursor verwenden:
IDBCursor - Beispiel für schnellere IndexedDB-Lesezugriffe mit getAllRecords() von Microsoft, 2025