Start · Sprachen · JavaScript · Referenz · IDBCursor.continuePrimaryKey()

IDBCursor.continuePrimaryKey()

Methode

Springt mit einem Index-Cursor zum ersten Datensatz mit Indexschlüssel <code>key</code> und Primärschlüssel ≥ <code>primaryKey</code> (bei „prev“: ≤) oder zum nächsten Datensatz danach.

seit JavaScript Baseline: alle modernen Browser (seit 2017; Chrome Kategorie: webapi

Signatur

IDBCursor.prototype.continuePrimaryKey(key, primaryKey)

Beschreibung

continuePrimaryKey() bewegt einen Cursor, der über einen Index läuft, an eine genau festgelegte Stelle. Die Stelle wird durch zwei Werte bestimmt: den Indexschlüssel (key) und den Primärschlüssel (primaryKey). Ein Index kann viele Datensätze mit demselben Schlüssel enthalten, zum Beispiel mehrere Bücher desselben Autors. Mit continue(key) allein landet man nur am Anfang einer solchen Gruppe. continuePrimaryKey() kann dagegen auch mitten in die Gruppe springen.

Innerhalb eines Index sind die Einträge zuerst nach Indexschlüssel und dann nach Primärschlüssel sortiert. In Richtung "next" springt der Cursor zum ersten Eintrag mit Indexschlüssel = key und Primärschlüssel ≥ primaryKey. Gibt es keinen solchen Eintrag, springt er zum ersten Eintrag mit Indexschlüssel > key. In Richtung "prev" gilt dasselbe spiegelbildlich (≤ bzw. <). Die Methode arbeitet asynchron: Das Ergebnis kommt mit dem nächsten success-Ereignis der Cursor-Anfrage. Findet sich kein passender Eintrag, ist request.result dann null.

Der wichtigste Einsatzfall ist die Keyset-Paginierung. Man merkt sich Index- und Primärschlüssel des zuletzt angezeigten Datensatzes und setzt die Iteration in einer neuen Transaktion genau dort fort. Das ist deutlich effizienter als advance(n), weil die davor liegenden Datensätze nicht einzeln durchlaufen werden müssen. Außerdem bleibt die Stelle auch dann richtig, wenn zwischendurch Datensätze eingefügt oder gelöscht wurden.

Parameter

Name Typ Default Beschreibung
$key Pflicht any (gültiger IndexedDB-Schlüssel: number | string | Date | ArrayBuffer | Array) Indexschlüssel, zu dem gesprungen werden soll. Er darf in Laufrichtung nicht vor der aktuellen Cursor-Position liegen.
$primaryKey Pflicht any (gültiger IndexedDB-Schlüssel) Primärschlüssel innerhalb der Gruppe key, ab dem (bei "next": ≥, bei "prev": ≤) der Cursor weiterläuft.

Rückgabewert

Typ
undefined
Beschreibung
Kein direkter Rückgabewert. Die neue Position steht mit dem nächsten success-Ereignis in request.result bereit. Ist kein passender Datensatz vorhanden, ist der Wert null.