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 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äten von getAllKeys() und getAll(), indem es sowohl Primärschlüssel als auch Werte gleichzeitig auflistet. Diese kombinierte Operation ermöglicht es, bestimmte Datenabrufmuster deutlich schneller auszuführen als Alternativen wie die Iteration mit Cursorn.
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. Wenn dieser Wertnullist oder nicht angegeben wird, verwendet der Browser einen ungebundenen Schlüsselbereich. countOptional-
Die Anzahl der zurückzugebenden Datensätze. Übersteigt dieser Wert die Anzahl der Datensätze in der Abfrage, ruft der Browser nur die angeforderten Datensätze ab. Wenn der Wert kleiner als
0oder größer als2^32 - 1ist, wird eineTypeError-Ausnahme 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 von Anfang an in aufsteigender Schlüsselreihenfolge durchlaufen. Dies ist der Standardwert.
nextunique-
Die Datensätze werden von Anfang an in aufsteigender Schlüsselreihenfolge durchlaufen. Für jeden Schlüssel mit doppelten Datensätzen wird nur der dem Anfang am nächsten gelegene Datensatz ausgegeben.
prev-
Die Datensätze werden vom Ende her in absteigender Schlüsselreihenfolge durchlaufen.
prevunique-
Die Datensätze werden vom Ende her in absteigender Schlüsselreihenfolge durchlaufen. Für jeden Schlüssel mit doppelten Datensätzen wird nur der dem Anfang am nächsten gelegene Datensatz ausgegeben.
Rückgabewert
Ein IDBRequest-Objekt, bei 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 repräsentieren, die mit der gegebenen Abfrage übereinstimmen, bis zu der angegebenen Anzahl durch count (falls bereitgestellt).
Jede IDBRecord-Instanz enthält folgende Eigenschaften:
key-
Ein Wert, der den Schlüssel des Datensatzes im Index darstellt.
primaryKey-
Ein Wert, der den Schlüssel des Datensatzes im verbundenen
IDBObjectStoredes Index darstellt. value-
Ein Wert, der den Wert des Datensatzes darstellt.
Ausnahmen
Diese Methode kann ein 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 diese
IDBIndex-Transaktion inaktiv ist. TypeErrorDOMException-
Wird ausgelöst, wenn der
count-Parameter nicht zwischen0und2^32 - 1liegt, einschließlich.
Beispiele
>Grundlegende Verwendung
Dieses Beispiel fragt einen IDBIndex nach bis zu 100 Datensätzen ab, deren lastName-Werte nach "Smith" kommen, wobei die Ergebnisse in umgekehrter Reihenfolge sortiert sind.
Der Code erstellt zunächst eine Transaktion in einer IDBDatabase namens db (der Code zum Öffnen der Datenbank wird weggelassen) und nutzt sie dann, um einen IDBObjectStore mit einer Kontaktliste abzurufen und daraus einen IDBIndex für die Eigenschaft lastName.
Anschließend wird getAllRecords() auf dem Index aufgerufen, wodurch eine IDBRequest-Instanz zurückgegeben wird.
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 (dies ist auch als request.result verfügbar).
Dieses Ergebnis enthält ein Array von IDBRecord-Instanzen.
Beachten Sie, dass da es sich um eine Abfrage auf einem IDBIndex handelt, key und primaryKey in jedem Datensatz unterschiedliche Werte haben können: Der key ist der Indexschlüssel (hier der lastName), während der primaryKey der Schlüssel des Datensatzes im Objekt-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()- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase - Verwendung von Transaktionen:
IDBTransaction - Festlegen eines Bereichs von Schlüsseln:
IDBKeyRange - Abrufen und Ändern Ihrer Daten:
IDBObjectStore - Verwendung von Cursoren:
IDBCursor - Schnellere IndexedDB-Lesevorgänge mit getAllRecords() Beispiel von Microsoft, 2025