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
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
odernextunique
. - Der Schlüssel ist größer oder gleich der Position dieses Cursors, und die Richtlinie dieses Cursors ist
prev
oderprevunique
.
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
odernext
ist.
Beispiele
So können Sie eine Iteration aller Artikel mit dem Tag "javascript"
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 (Beispiel live ansehen).