IDBCursor
Baseline
Weitgehend verfügbar
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Hinweis:
Nicht zu verwechseln mit IDBCursorWithValue, einer IDBCursor-Schnittstelle mit einer zusätzlichen value-Eigenschaft.
Die IDBCursor-Schnittstelle der IndexedDB API stellt einen Cursor dar, mit dem mehrere Datensätze in einer Datenbank durchlaufen werden können.
Der Cursor hat eine Quelle, die angibt, welchen Index oder Object Store er durchläuft. Er hat eine Position innerhalb des Bereichs und bewegt sich in einer Richtung, in der die Reihenfolge der Datensatzschlüssel auf- oder absteigt. Mit dem Cursor kann eine Anwendung alle Datensätze im Bereich des Cursors asynchron verarbeiten.
Sie können beliebig viele Cursor gleichzeitig verwenden. Für einen bestimmten Cursor erhalten Sie immer dasselbe IDBCursor-Objekt. Operationen werden auf dem zugrunde liegenden Index oder Object Store ausgeführt.
Konstanten
Warnung: Diese Konstanten sind nicht mehr verfügbar – sie wurden in Gecko 25 entfernt. Verwenden Sie stattdessen direkt die String-Konstanten. (Firefox-Bug 891944)
NEXT:"next": Der Cursor zeigt alle Datensätze einschließlich Duplikaten an. Er beginnt an der unteren Grenze des Schlüsselbereichs und bewegt sich aufwärts (in der Reihenfolge der Schlüssel monoton steigend).NEXTUNIQUE:"nextunique": Der Cursor zeigt alle Datensätze ohne Duplikate an. Wenn mehrere Datensätze mit demselben Schlüssel vorhanden sind, wird nur der erste beim Durchlaufen erfasst. Er beginnt an der unteren Grenze des Schlüsselbereichs und bewegt sich aufwärts.PREV:"prev": Der Cursor zeigt alle Datensätze einschließlich Duplikaten an. Er beginnt an der oberen Grenze des Schlüsselbereichs und bewegt sich abwärts (in der Reihenfolge der Schlüssel monoton fallend).PREVUNIQUE:"prevunique": Der Cursor zeigt alle Datensätze ohne Duplikate an. Wenn mehrere Datensätze mit demselben Schlüssel vorhanden sind, wird nur der erste beim Durchlaufen erfasst. Er beginnt an der oberen Grenze des Schlüsselbereichs und bewegt sich abwärts.
Instanzeigenschaften
Hinweis:
IDBCursorWithValue ist eine IDBCursor-Schnittstelle mit einer zusätzlichen value-Eigenschaft.
IDBCursor.sourceSchreibgeschützt-
Gibt den
IDBObjectStoreoderIDBIndexzurück, den der Cursor durchläuft. Diese Eigenschaft gibt niemals null zurück und löst keine Ausnahme aus, selbst wenn der Cursor gerade durchlaufen wird, das Ende seines Bereichs überschritten hat oder seine Transaktion nicht aktiv ist. IDBCursor.directionSchreibgeschützt-
Gibt die Durchlaufrichtung des Cursors zurück.
IDBCursor.keySchreibgeschützt-
Gibt den Schlüssel des Datensatzes an der Position des Cursors zurück. Befindet sich der Cursor außerhalb seines Bereichs, ist der Wert
undefined. Der Schlüssel des Cursors kann einen beliebigen Datentyp haben. IDBCursor.primaryKeySchreibgeschützt-
Gibt den aktuellen effektiven Primärschlüssel des Cursors zurück. Wird der Cursor gerade durchlaufen oder hat er seinen Bereich verlassen, ist der Wert
undefined. Der Primärschlüssel des Cursors kann einen beliebigen Datentyp haben. IDBCursor.requestSchreibgeschützt-
Gibt den
IDBRequestzurück, mit dem der Cursor abgerufen wurde.
Instanzmethoden
IDBCursor.advance()-
Legt fest, um wie viele Positionen der Cursor vorwärts bewegt werden soll.
IDBCursor.continue()-
Bewegt den Cursor in seiner Durchlaufrichtung zur nächsten Position oder zu dem Eintrag, dessen Schlüssel dem optionalen Parameter
keyentspricht. IDBCursor.continuePrimaryKey()-
Bewegt den Cursor zu dem als Argumente angegebenen Indexschlüssel und 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 dessen Position zu ändern. Damit können bestimmte Datensätze gelöscht werden. IDBCursor.update()-
Gibt ein
IDBRequest-Objekt zurück und aktualisiert in einem separaten Thread den Wert an der aktuellen Position des Cursors im Object Store. Damit können bestimmte Datensätze aktualisiert werden.
Beispiele
In diesem einfachen Codeausschnitt erstellen wir eine Transaktion, rufen einen Object Store ab und verwenden anschließend einen Cursor, um alle Datensätze im Object Store zu durchlaufen. Für den Cursor müssen wir die Daten nicht anhand eines Schlüssels auswählen; wir können einfach alle abrufen. Beachten Sie außerdem, dass Sie bei jedem Schleifendurchlauf mit cursor.value.foo über das Cursor-Objekt auf Daten des aktuellen Datensatzes zugreifen können. Ein vollständiges, funktionsfähiges Beispiel finden Sie in unserem 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
| Spezifikation |
|---|
| Indexed Database API 3.0> # cursor-interface> |
Browser-Kompatibilität
Siehe auch
- IndexedDB verwenden
- Transaktionen starten:
IDBDatabase - Transaktionen verwenden:
IDBTransaction - Einen Schlüsselbereich festlegen:
IDBKeyRange - Daten abrufen und ändern:
IDBObjectStore - Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).