Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

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

js
getAllRecords()
getAllRecords(options)

Parameter

Ein Optionsobjekt, das folgende Eigenschaften enthalten kann:

query Optional

Ein Schlüssel oder ein IDBKeyRange, der die abzurufenden Datensätze bestimmt. Ist dieser Wert null oder nicht angegeben, verwendet der Browser einen unbegrenzten Schlüsselbereich.

count Optional

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 0 oder größer als 2^32 - 1, wird eine TypeError-Ausnahme ausgelöst.

direction Optional

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 IDBObjectStore des Index repräsentiert.

value

Ein Wert, der den Wert des Datensatzes repräsentiert.

Ausnahmen

Diese Methode kann eine DOMException der folgenden Typen auslösen:

InvalidStateError DOMException

Wird ausgelöst, wenn der IDBIndex oder sein zugehöriger IDBObjectStore gelöscht oder entfernt wurde.

TransactionInactiveError DOMException

Wird ausgelöst, wenn die Transaktion dieses IDBIndex inaktiv ist.

TypeError

Wird ausgelöst, wenn der Parameter count nicht im Bereich von 0 bis einschließlich 2^32 - 1 liegt.

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.

js
// 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