IDBCursor
Hinweis: Diese Funktion ist in Web Workers verfügbar.
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
Schreibgeschützt-
Gibt den
IDBObjectStore
oderIDBIndex
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
Schreibgeschützt-
Gibt die Durchlaufrichtung des Cursors zurück.
IDBCursor.key
Schreibgeschützt-
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
Schreibgeschützt-
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
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 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, 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 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.)
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
- Verwendung von IndexedDB
- Beginn von Transaktionen:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegen eines Schlüsselbereichs:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Referenzbeispiel: To-do Notifications (Beispiel live ansehen).