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

BCD tables only load in the browser

Siehe auch