IDBCursor

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Hinweis: Nicht zu verwechseln mit IDBCursorWithValue, das ist eine IDBCursor-Schnittstelle mit einer zusätzlichen value-Eigenschaft.

Die IDBCursor-Schnittstelle der IndexedDB-API repräsentiert einen Cursor zum Durchlaufen oder Iterieren mehrerer Datensätze in einer Datenbank.

Der Cursor hat eine Quelle, die anzeigt, über welchen Index oder welches Objektlager er iteriert. Er hat eine Position innerhalb der Reichweite und bewegt sich in eine Richtung, die in der Reihenfolge der Schlüssel der Datensätze zunimmt oder abnimmt. Der Cursor ermöglicht es einer Anwendung, alle Datensätze im Bereich des Cursors asynchron zu verarbeiten.

Sie können eine unbegrenzte Anzahl von Cursors gleichzeitig haben. Sie erhalten immer dasselbe IDBCursor-Objekt, das einen bestimmten Cursor repräsentiert. Operationen werden auf dem zugrunde liegenden Index oder Objektlager durchgeführt.

Instanz-Eigenschaften

Hinweis: IDBCursorWithValue ist eine IDBCursor-Schnittstelle mit einer zusätzlichen value-Eigenschaft.

IDBCursor.source Nur lesbar

Gibt den IDBObjectStore oder IDBIndex zurück, den der Cursor durchläuft. Diese Funktion gibt niemals null zurück und wirft keine Ausnahme, selbst wenn der Cursor derzeit durchlaufen wird, über sein Ende hinaus iteriert ist oder seine Transaktion nicht aktiv ist.

IDBCursor.direction Nur lesbar

Gibt die Durchlaufrichtung des Cursors zurück.

IDBCursor.key Nur lesbar

Gibt den Schlüssel für den Datensatz an der Position des Cursors zurück. Befindet sich der Cursor außerhalb seines Bereichs, ist dieser auf undefined gesetzt. Der Schlüssel des Cursors kann jeden Datentyp haben.

IDBCursor.primaryKey Nur lesbar

Gibt den aktuellen effektiven Primärschlüssel des Cursors zurück. Wenn der Cursor derzeit durchlaufen wird oder außerhalb seines Bereichs iteriert hat, ist dieser auf undefined gesetzt. Der Primärschlüssel des Cursors kann jeden Datentyp haben.

IDBCursor.request Nur lesbar

Gibt das IDBRequest zurück, das verwendet wurde, um den Cursor zu erhalten.

Instanz-Methoden

IDBCursor.advance()

Legt die Anzahl der Male fest, die ein Cursor seine Position nach vorne bewegen soll.

IDBCursor.continue()

Setzt den Cursor auf die nächste Position in seiner Richtung, auf das Element, dessen Schlüssel mit dem optionalen key-Parameter übereinstimmt.

IDBCursor.continuePrimaryKey()

Setzt den Cursor auf den angegebenen Indexschlüssel und Primärschlüssel, die als Argumente angegeben sind.

IDBCursor.delete()

Gibt ein IDBRequest-Objekt zurück und löscht in einem separaten Thread den Datensatz an der Position des Cursors, ohne die Position des Cursors zu ändern. Dies kann verwendet werden, um spezifische Datensätze zu löschen.

IDBCursor.update()

Gibt ein IDBRequest-Objekt zurück und aktualisiert in einem separaten Thread den Wert an der aktuellen Position des Cursors im Objektlager. Dies kann verwendet werden, um spezifische Datensätze zu aktualisieren.

Konstanten

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, kann sie bereits aus den relevanten Webstandards entfernt worden sein, befindet sich im Prozess der Entfernung oder wird nur aus Kompatibilitätsgründen beibehalten. Vermeiden Sie die Verwendung und aktualisieren Sie gegebenenfalls bestehenden Code; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu treffen. Beachten Sie, dass diese Funktion jederzeit nicht mehr funktionieren kann.

Warnung: Diese Konstanten sind nicht mehr verfügbar — sie wurden in Gecko 25 entfernt. Sie sollten stattdessen die Zeichenkettenkonstanten direkt verwenden. (Firefox-Bug 891944)

  • NEXT: "next" : Der Cursor zeigt alle Datensätze einschließlich Duplikate an. Er beginnt an der unteren Grenze des Schlüsselbereichs und bewegt sich aufwärts (monoton steigend in der Reihenfolge der Schlüssel).
  • NEXTUNIQUE : "nextunique" : Der Cursor zeigt alle Datensätze ohne Duplikate an. Wenn mehrere Datensätze mit demselben Schlüssel existieren, wird nur der erste iterierte zurückgegeben. Er beginnt an der unteren Grenze des Schlüsselbereichs und bewegt sich aufwärts.
  • PREV: "prev" : Der Cursor zeigt alle Datensätze einschließlich Duplikate an. Er beginnt an der oberen Grenze des Schlüsselbereichs und bewegt sich abwärts (monoton fallend in der Reihenfolge der Schlüssel).
  • PREVUNIQUE: "prevunique" : Der Cursor zeigt alle Datensätze ohne Duplikate an. Wenn mehrere Datensätze mit demselben Schlüssel existieren, wird nur der erste iterierte zurückgegeben. Er beginnt an der oberen Grenze des Schlüsselbereichs und bewegt sich abwärts.

Beispiele

In diesem einfachen Fragment erstellen wir eine Transaktion, rufen ein Objektlager ab und verwenden dann einen Cursor, um alle Datensätze im Objektlager zu durchlaufen. Der Cursor erfordert nicht, dass wir die Daten basierend auf einem Schlüssel auswählen; wir können einfach alle abrufen. Beachten Sie auch, dass Sie in jeder Iteration der Schleife Daten aus dem aktuellen Datensatz unter dem Cursor-Objekt mit cursor.value.foo abrufen können. Für ein vollständiges Arbeitsbeispiel siehe unser IDBCursor-Beispiel (Beispiel live ansehen.)

js
function displayData() {
  const transaction = db.transaction(["rushAlbumList"], "readonly");
  const objectStore = transaction.objectStore("rushAlbumList");

  objectStore.openCursor().onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const listItem = document.createElement("li");
      listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
      list.appendChild(listItem);

      cursor.continue();
    } else {
      console.log("Entries all displayed.");
    }
  };
}

Spezifikationen

Specification
Indexed Database API 3.0
# cursor-interface

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch