IDBCursor: continuePrimaryKey()-Methode

Baseline Widely available

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

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

Die continuePrimaryKey()-Methode des IDBCursor-Interfaces bewegt den Cursor zu dem Element, dessen Schlüssel mit dem Schlüsselparameter übereinstimmt und dessen Primärschlüssel dem Primärschlüsselparameter entspricht.

Ein typischer Anwendungsfall ist das Fortsetzen der Iteration dort, wo ein vorheriger Cursor geschlossen wurde, ohne die Schlüssel einzeln vergleichen zu müssen.

Diese Methode mehr als einmal aufzurufen, bevor neue Cursor-Daten geladen werden - zum Beispiel continuePrimaryKey() zweimal im selben onsuccess-Handler aufzurufen - führt dazu, dass beim zweiten Aufruf ein InvalidStateError geworfen wird, da das Markierungsflag für den aktuellen Wert des Cursors zurückgesetzt wurde.

Diese Methode ist nur für Cursor gültig, die von einem Index stammen. Bei Verwendung für Cursor, die von einem Objektspeicher stammen, wird ein Fehler geworfen.

Syntax

js
continuePrimaryKey(key, primaryKey)

Parameter

key

Der Schlüssel, bei dem der Cursor positioniert werden soll.

primaryKey

Der Primärschlüssel, bei dem der Cursor positioniert werden soll.

Rückgabewert

Keiner (undefined).

Ausnahmen

Diese Methode kann eine DOMException der folgenden Typen hervorrufen:

TransactionInactiveError DOMException

Wird geworfen, wenn die Transaktion dieses IDBCursor inaktiv ist.

DataError DOMException

Wird geworfen, wenn der Schlüsselparameter eine der folgenden Bedingungen aufweist:

  • Der Schlüssel ist kein gültiger Schlüssel.
  • Der Schlüssel ist kleiner oder gleich der Position dieses Cursors und die Richtung des Cursors ist next oder nextunique.
  • Der Schlüssel ist größer oder gleich der Position dieses Cursors und die Richtung dieses Cursors ist prev oder prevunique.
InvalidStateError DOMException

Wird geworfen, wenn der Cursor derzeit iteriert wird oder bereits sein Ende erreicht hat.

InvalidAccessError DOMException

Wird geworfen, wenn die Richtung des Cursors nicht prev oder next ist.

Beispiele

So können Sie eine Iteration aller Artikel, die mit "javascript" getaggt sind, seit Ihrem letzten Besuch fortsetzen:

js
let request = articleStore.index("tag").openCursor();
let count = 0;
let unreadList = [];
request.onsuccess = (event) => {
  let cursor = event.target.result;
  if (!cursor) {
    return;
  }
  let lastPrimaryKey = getLastIteratedArticleId();
  if (lastPrimaryKey > cursor.primaryKey) {
    cursor.continuePrimaryKey("javascript", lastPrimaryKey);
    return;
  }
  // update lastIteratedArticleId
  setLastIteratedArticleId(cursor.primaryKey);
  // preload 5 articles into the unread list;
  unreadList.push(cursor.value);
  if (++count < 5) {
    cursor.continue();
  }
};

Spezifikationen

Specification
Indexed Database API 3.0
# ref-for-dom-idbcursor-continueprimarykey①

Browser-Kompatibilität

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
continuePrimaryKey

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Siehe auch