IDBCursor: continuePrimaryKey() Methode

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die continuePrimaryKey()-Methode der IDBCursor Schnittstelle bewegt den Cursor zu dem Element, dessen Schlüssel mit dem Schlüsselparameter übereinstimmt, sowie dessen Primärschlüssel mit dem Primärschlüsselparameter übereinstimmt.

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

Das mehrfache Aufrufen dieser Methode, bevor neue Cursordaten geladen wurden - zum Beispiel das zweimalige Aufrufen von continuePrimaryKey() aus demselben onsuccess-Handler - führt dazu, dass bei dem zweiten Aufruf ein InvalidStateError ausgelöst wird, da das got value-Flag des Cursors zurückgesetzt wurde.

Diese Methode ist nur für Cursor, die von einem Index stammen, gültig. Bei der Verwendung für Cursor, die aus einem Objektstore stammen, wird ein Fehler ausgelöst.

Syntax

js
continuePrimaryKey(key, primaryKey)

Parameter

key

Der Schlüssel, auf den der Cursor positioniert werden soll.

primaryKey

Der Primärschlüssel, auf den der Cursor positioniert werden soll.

Rückgabewert

Keiner (undefined).

Ausnahmen

Diese Methode kann eine DOMException eines der folgenden Typen auslösen:

TransactionInactiveError DOMException

Wird ausgelöst, wenn die Transaktion dieses IDBCursors inaktiv ist.

DataError DOMException

Wird ausgelöst, wenn der Schlüsselparameter eine der folgenden Bedingungen erfüllt:

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

Wird ausgelöst, wenn der Cursor gerade iteriert wird oder das Ende seiner Iteration erreicht hat.

InvalidAccessError DOMException

Wird ausgelöst, wenn die Richtung des Cursors nicht prev oder next ist.

Beispiele

So können Sie eine Iteration aller Artikel mit dem Tag "javascript" 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