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 getAllRecords() Methode des IDBIndex Interfaces ruft alle Datensätze (einschließlich Indexschlüssel, Primärschlüssel und Werte) aus dem Index ab.
getAllRecords() kombiniert effektiv die Funktionalität von getAllKeys() und getAll() durch das gleichzeitige Aufzählen von Primärschlüsseln und Werten. Diese kombinierte Operation ermöglicht es, bestimmte Datenabrufmuster signifikant schneller als Alternativen wie Iteration mit Cursorn durchzuführen.
Syntax
getAllRecords()
getAllRecords(options)
Parameter
Ein Optionsobjekt, dessen Eigenschaften Folgendes beinhalten können:
queryOptional-
Ein Schlüssel oder ein
IDBKeyRange, der die abzurufenden Datensätze identifiziert. Falls dieser Wertnulloder nicht angegeben ist, verwendet der Browser einen nicht gebundenen Schlüsselbereich. countOptional-
Die Anzahl der zurückzugebenden Datensätze. Wenn dieser Wert die Anzahl der Datensätze in der Abfrage übersteigt, ruft der Browser nur die abgefragten Datensätze ab. Wenn der Wert kleiner als
0oder größer als2^32 - 1ist, wird eineTypeErrorAusnahme ausgelöst. directionOptional-
Ein enumerierter Wert, der die Richtung angibt, in der die Datensätze durchlaufen werden. Mögliche Werte sind:
next-
Die Datensätze werden vom Anfang aus in aufsteigender Schlüsselreihenfolge durchlaufen. Dies ist der Standardwert.
nextunique-
Die Datensätze werden vom Anfang aus in aufsteigender Schlüsselreihenfolge durchlaufen. Für jeden Schlüssel mit doppelten Datensätzen wird nur der Datensatz, der dem Anfang am nächsten liegt, geliefert.
prev-
Die Datensätze werden vom Ende aus in absteigender Schlüsselreihenfolge durchlaufen.
prevunique-
Die Datensätze werden vom Ende aus in absteigender Schlüsselreihenfolge durchlaufen. Für jeden Schlüssel mit doppelten Datensätzen wird nur der Datensatz, der dem Anfang am nächsten liegt, geliefert.
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 angegebenen Anzahl (falls angegeben).
Jede IDBRecord Instanz enthält die folgenden Eigenschaften:
key-
Ein Wert, der den Schlüssel des Datensatzes im Index darstellt.
primaryKey-
Ein Wert, der den Schlüssel des Datensatzes im mit dem Index assoziierten
IDBObjectStoredarstellt. value-
Ein Wert, der den Wert des Datensatzes darstellt.
Ausnahmen
Diese Methode kann eine DOMException der folgenden Typen hervorrufen:
InvalidStateErrorDOMException-
Ausgelöst, wenn der
IDBIndexoder sein assoziierterIDBObjectStoregelöscht oder entfernt wurde. TransactionInactiveErrorDOMException-
Ausgelöst, wenn die Transaktion dieses
IDBIndexinaktiv ist. TypeErrorDOMException-
Ausgelöst, wenn der
countParameter nicht zwischen0und2^32 - 1liegt, einschließlich.
Beispiele
>Grundlegende Nutzung
Dieses Beispiel fragt einen IDBIndex für bis zu 100 Datensätze ab, deren lastName Werte nach "Smith" kommen, wobei die Ergebnisse in umgekehrter Reihenfolge sortiert werden.
Der Code erstellt zuerst eine Transaktion auf einer IDBDatabase namens db (wobei der Code zum Öffnen der Datenbank weggelassen wird), und verwendet sie dann, um einen IDBObjectStore zu erhalten, der eine Kontaktliste enthält, und davon einen IDBIndex auf der lastName Eigenschaft.
Danach wird getAllRecords() auf dem Index aufgerufen, was eine IDBRequest Instanz zurückgibt.
Es werden Ereignislistener zu dieser Anfrage für die success und error Ereignisse 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.
Da es sich um eine Abfrage auf einem IDBIndex handelt, können key und primaryKey in jedem Datensatz unterschiedliche Werte haben: der key ist der Indexschlüssel (hier, der lastName), während der primaryKey der Schlüssel des Datensatzes im Objektstore 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()- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase - Transaktionen nutzen:
IDBTransaction - Einen Bereich von Schlüsseln festlegen:
IDBKeyRange - Ihre Daten abrufen und ändern:
IDBObjectStore - Cursorn verwenden:
IDBCursor - Schnellere IndexedDB-Lesevorgänge mit dem getAllRecords() Beispiel von Microsoft, 2025