IDBObjectStore: getAllRecords()-Methode
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Want more support for this feature? Tell us why.
Die getAllRecords()-Methode der IDBObjectStore-Schnittstelle ruft alle Datensätze (einschließlich Primärschlüssel und Werte) aus dem Objekt-Store ab.
getAllRecords() kombiniert effektiv die Funktionalität von getAllKeys() und getAll(), indem es sowohl Primärschlüssel als auch Werte gleichzeitig auflistet. Diese kombinierte Operation ermöglicht bestimmte Datenabfragemuster, die erheblich schneller sind als Alternativen wie die Iteration mit Cursors.
Syntax
getAllRecords()
getAllRecords(options)
Parameter
Ein Optionen-Objekt, dessen Eigenschaften Folgendes enthalten können:
queryOptional-
Ein Schlüssel oder ein
IDBKeyRange, der die abzurufenden Datensätze identifiziert. Wenn dieser Wertnullist oder nicht angegeben wird, verwendet der Browser einen ungebundenen Schlüsselbereich. countOptional-
Die Anzahl der zurückzugebenden Datensätze. Wenn dieser Wert die Anzahl der Datensätze in der Abfrage überschreitet, ruft der Browser nur die abgefragten Datensätze ab. Wenn der Wert kleiner als
0oder größer als2^32 - 1ist, wird eineTypeError-Ausnahme ausgelöst. directionOptional-
Ein enumerierter Wert, der angibt, in welcher Richtung die Datensätze durchlaufen werden, was wiederum die Reihenfolge definiert, in der sie zurückgegeben 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. Dies ergibt die gleichen Datensätze wie
next, da doppelte Schlüssel inIDBObjectStores nicht erlaubt 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. Dies ergibt die gleichen Datensätze wie
prev, da doppelte Schlüssel inIDBObjectStores nicht erlaubt sind.
Rückgabewert
Ein IDBRequest-Objekt, auf dem nachfolgende Ereignisse im Zusammenhang mit dieser Operation ausgelöst werden.
Wenn die Operation erfolgreich ist, ist der Wert der result-Eigenschaft der Anfrage ein Array von IDBRecord-Instanzen, die alle Datensätze darstellen, die der gegebenen Abfrage entsprechen, bis zu der durch count (falls angegeben) bestimmten Menge.
Jede IDBRecord-Instanz enthält die folgenden Eigenschaften:
key-
Ein Wert, der den Schlüssel des Datensatzes darstellt. Dies ist identisch mit der
primaryKey-Eigenschaft. 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. TypeErrorDOMException-
Wird ausgelöst, wenn der
count-Parameter nicht zwischen0und2^32 - 1, einschließlich, liegt.
Beispiele
>Grundlegende Nutzung
Dieses Beispiel fragt einen IDBObjectStore nach bis zu 100 Datensätzen ab, deren Schlüssel nach "myKey" kommen, wobei die Ergebnisse in umgekehrter Reihenfolge sortiert sind.
Der Code erstellt zunächst eine Transaktion in einer IDBDatabase namens db (ohne den Code zum Öffnen der Datenbank) und verwendet sie dann, um einen IDBObjectStore abzurufen, der eine Kontaktliste enthält.
Anschließend wird getAllRecords() im Objekt-Store aufgerufen, was eine IDBRequest-Instanz zurückgibt. Es werden Ereignislistener für die Ereignisse success und error zu dieser Anfrage hinzugefügt. Bei Erfolg wird das Ergebnis event.target.result protokolliert (dies ist auch als request.result verfügbar).
Dieses Ergebnis enthält ein Array von IDBRecord-Instanzen.
Es ist zu beachten, dass, da dies eine Abfrage an einen IDBObjectStore ist, der key und primaryKey in jedem Datensatz denselben Wert haben.
// 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()- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase - Verwendung von Transaktionen:
IDBTransaction - Festlegen eines Schlüsselbereichs:
IDBKeyRange - Abrufen und Ändern Ihrer Daten:
IDBObjectStore - Verwendung von Cursors:
IDBCursor - Schnellere IndexedDB-Lesevorgänge mit getAllRecords()-Beispiel von Microsoft, 2025