IDBObjectStore: Methode getAllRecords()
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 IDBObjectStore ruft alle Datensätze (einschließlich Primärschlüsseln und Werten) aus dem Objektspeicher ab.
getAllRecords() kombiniert die Funktionalität von getAllKeys() und getAll(), indem Primärschlüssel und Werte gleichzeitig aufgelistet werden. Durch diese kombinierte Operation können bestimmte Datenzugriffe 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 eine
IDBKeyRange, mit dem bzw. der die abzurufenden Datensätze angegeben werden. 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 die entsprechenden 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, und damit ihre Rückgabereihenfolge bestimmt. 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. Dabei werden dieselben Datensätze wie bei
nextzurückgegeben, da doppelte Schlüssel inIDBObjectStore-Instanzen nicht zulässig sind. 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. Dabei werden dieselben Datensätze wie bei
prevzurückgegeben, da doppelte Schlüssel inIDBObjectStore-Instanzen nicht zulässig sind.
Rückgabewert
Ein IDBRequest-Objekt, an dem nachfolgende Ereignisse im Zusammenhang mit dieser Operation ausgelöst werden.
Ist die Operation erfolgreich, enthält die Eigenschaft result der Anfrage ein Array aus IDBRecord-Instanzen. Diese stellen alle Datensätze dar, die der angegebenen Abfrage entsprechen, höchstens jedoch die durch count festgelegte Anzahl (falls angegeben).
Jede IDBRecord-Instanz enthält die folgenden Eigenschaften:
key-
Ein Wert, der den Schlüssel des Datensatzes darstellt. Er ist mit der Eigenschaft
primaryKeyidentisch. primaryKey-
Der Primärschlüssel des Datensatzes.
value-
Ein Wert, der den Wert des Datensatzes darstellt.
Ausnahmen
Diese Methode kann eine DOMException der folgenden Typen auslösen:
InvalidStateErrorDOMException-
Wird ausgelöst, wenn der
IDBObjectStoregelöscht oder entfernt wurde. TransactionInactiveErrorDOMException-
Wird ausgelöst, wenn die Transaktion dieses
IDBObjectStoreinaktiv ist. TypeError-
Wird ausgelöst, wenn der Parameter
countnicht im Bereich von0bis einschließlich2^32 - 1liegt.
Beispiele
>Grundlegende Verwendung
Dieses Beispiel fragt einen IDBObjectStore nach bis zu 100 Datensätzen ab, deren Schlüssel nach "myKey" liegen. 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) und greift damit auf einen IDBObjectStore zu, der eine Kontaktliste enthält. Anschließend ruft er getAllRecords() für den Objektspeicher auf und erhält eine IDBRequest-Instanz. Für diese 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. Da die Abfrage für einen IDBObjectStore ausgeführt wird, haben key und primaryKey in jedem Datensatz denselben Wert.
// 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 query = IDBKeyRange.lowerBound("myKey", true);
const request = objectStore.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> # dom-idbobjectstore-getallrecords> |
Browser-Kompatibilität
Siehe auch
IDBObjectStore.getAll(),IDBObjectStore.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 schnelleres Lesen aus IndexedDB mit getAllRecords() von Microsoft, 2025