IDBCursor

Baseline Widely available

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

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

Hinweis: Nicht zu verwechseln mit IDBCursorWithValue, welches einfach ein IDBCursor-Interface mit einer zusätzlichen value-Eigenschaft ist.

Das IDBCursor-Interface der IndexedDB API repräsentiert einen Cursor zum Durchlaufen oder Iterieren über mehrere Datensätze in einer Datenbank.

Der Cursor hat eine Quelle, die angibt, über welchen Index oder Objektstore er iteriert. Er hat eine Position innerhalb des Bereichs und bewegt sich in einer Richtung, die im Sortierverfahren 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 an Cursors gleichzeitig haben. Sie erhalten immer dasselbe IDBCursor-Objekt, das einen bestimmten Cursor darstellt. Operationen werden auf dem zugrunde liegenden Index oder Objektstore durchgeführt.

Instanz-Eigenschaften

Hinweis:>IDBCursorWithValue ist ein IDBCursor-Interface mit einer zusätzlichen value-Eigenschaft.

IDBCursor.source Schreibgeschützt

Gibt den IDBObjectStore oder IDBIndex zurück, über den der Cursor iteriert. Diese Funktion gibt niemals null zurück und wirft keine Ausnahme, selbst wenn der Cursor gerade iteriert wird, das Ende überschritten hat oder seine Transaktion nicht aktiv ist.

IDBCursor.direction Schreibgeschützt

Gibt die Richtung der Traversierung des Cursors zurück.

IDBCursor.key Schreibgeschützt

Gibt den Schlüssel für den Datensatz an der Position des Cursors zurück. Wenn der Cursor außerhalb seines Bereichs ist, wird dies auf undefined gesetzt. Der Schlüssel des Cursors kann jeden Datentyp annehmen.

IDBCursor.primaryKey Schreibgeschützt

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

IDBCursor.request Schreibgeschützt

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 vorwärts bewegen soll.

IDBCursor.continue()

Bewegt den Cursor zur nächsten Position in seiner Richtung, zu dem Element, dessen Schlüssel dem optionalen key-Parameter entspricht.

IDBCursor.continuePrimaryKey()

Setzt den Cursor auf den angegebenen Indexschlüssel und den als Argumente übergebenen Primärschlüssel.

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 bestimmte 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 Objektstore. Dies kann verwendet werden, um bestimmte Datensätze zu aktualisieren.

Konstanten

Veraltet: Diese Funktion wird nicht mehr empfohlen. Obwohl einige Browser sie möglicherweise noch unterstützen, könnte sie bereits aus den relevanten Webstandards entfernt worden sein, in Kürze entfernt werden oder nur noch aus Kompatibilitätsgründen bestehen. Vermeiden Sie die Verwendung und aktualisieren Sie vorhandenen Code, falls möglich; siehe die Kompatibilitätstabelle am Ende dieser Seite, um Ihre Entscheidung zu unterstützen. Beachten Sie, dass diese Funktion jederzeit aufhören könnte zu funktionieren.

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

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

Beispiele

In diesem einfachen Fragment erstellen wir eine Transaktion, rufen einen Objektstore ab und verwenden dann einen Cursor, um alle Datensätze im Objektstore 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. Ein vollständiges Arbeitsbeispiel finden Sie in unserem 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

Siehe auch