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
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
odernextunique
. - Der Schlüssel ist größer oder gleich der Position dieses Cursors und die Richtung dieses Cursors ist
prev
oderprevunique
.
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
odernext
ist.
Beispiele
So können Sie eine Iteration aller Artikel, die mit "javascript"
getaggt sind, seit Ihrem letzten Besuch fortsetzen:
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
- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegen eines Schlüsselbereichs:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursorn:
IDBCursor
- Referenzbeispiel: To-do Notifications (Das Beispiel live ansehen).