Signatur
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
success-Ereignis in request.result bereit. Ist kein passender Datensatz vorhanden, ist der Wert null.