IDBObjectStore: openCursor() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die openCursor() Methode des IDBObjectStore-Interfaces gibt ein IDBRequest-Objekt zurück und in einem separaten Thread ein neues IDBCursorWithValue-Objekt. Sie wird verwendet, um mit einem Cursor durch einen Object Store zu iterieren.

Syntax

js
openCursor()
openCursor(query)
openCursor(query, direction)

Parameter

query Optional

Ein Schlüssel oder IDBKeyRange, der abgefragt werden soll. Wenn ein einzelner gültiger Schlüssel übergeben wird, entspricht dies standardmäßig einem Bereich, der nur diesen Schlüssel enthält. Wird nichts übergeben, entspricht dies standardmäßig einem Schlüsselbereich, der alle Datensätze in diesem Object Store auswählt.

direction Optional

Ein String, der dem Cursor mitteilt, in welche Richtung er sich bewegen soll. Der Standardwert ist next. Gültige Werte sind:

next

Der Cursor wird am Anfang des Stores geöffnet; dann gibt der Cursor alle Datensätze, auch Duplikate, in aufsteigender Reihenfolge der Schlüssel zurück.

nextunique

Der Cursor wird am Anfang des Stores geöffnet; dann gibt der Cursor alle Datensätze, die keine Duplikate sind, in aufsteigender Reihenfolge der Schlüssel zurück.

prev

Der Cursor wird am Ende des Stores geöffnet; dann gibt der Cursor alle Datensätze, auch Duplikate, in absteigender Reihenfolge der Schlüssel zurück.

prevunique

Der Cursor wird am Ende des Stores geöffnet; dann gibt der Cursor alle Datensätze, die keine Duplikate sind, in absteigender Reihenfolge der Schlüssel zurück.

Rückgabewert

Ein IDBRequest-Objekt, auf dem nachfolgende Ereignisse in Bezug auf diese Operation ausgelöst werden.

Wenn die Operation erfolgreich ist, ist der Wert der result-Eigenschaft der Anfrage:

  • ein IDBCursorWithValue-Objekt, das auf den ersten Datensatz zeigt, der der angegebenen Abfrage entspricht
  • null, wenn keine passenden Datensätze gefunden wurden.

Ausnahmen

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

InvalidStateError DOMException

Wird ausgelöst, wenn dieses IDBObjectStore oder IDBIndex gelöscht wurde.

TransactionInactiveError DOMException

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

DataError DOMException

Wird ausgelöst, wenn der angegebene Schlüssel oder Schlüsselbereich ungültig ist.

Beispiele

In diesem einfachen Fragment erstellen wir eine Transaktion, rufen einen Object Store ab und verwenden dann einen Cursor, um alle Datensätze im Object Store zu durchlaufen:

js
const transaction = db.transaction("name", "readonly");
const objectStore = transaction.objectStore("name");
const request = objectStore.openCursor();
request.onsuccess = (event) => {
  const cursor = event.target.result;
  if (cursor) {
    // cursor.value contains the current record being iterated through
    // this is where you'd do something with the result
    cursor.continue();
  } else {
    // no more results
  }
};

Spezifikationen

Specification
Indexed Database API 3.0
# ref-for-dom-idbobjectstore-opencursor②

Browser-Kompatibilität

Siehe auch