IDBCursor: delete()-Methode
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die delete()
-Methode des IDBCursor
Interfaces gibt ein IDBRequest
-Objekt zurück und löscht in einem separaten Thread
den Datensatz an der Position des Cursors, ohne die Position des Cursors zu ändern.
Sobald der Datensatz gelöscht ist, wird der Wert des Cursors auf null gesetzt.
Beachten Sie, dass Sie delete()
(oder
IDBCursor.update()
) nicht für Cursor aufrufen können, die mit
IDBIndex.openKeyCursor()
erhalten wurden. Für solche Anforderungen müssen Sie stattdessen
IDBIndex.openCursor()
verwenden.
Syntax
delete()
Parameter
Keine.
Rückgabewert
Ein IDBRequest
-Objekt, auf dem nachfolgende Ereignisse im Zusammenhang mit dieser
Operation ausgelöst werden.
Wenn die Operation erfolgreich ist, ist der Wert der result
-Eigenschaft der Anfrage undefined
.
Ausnahmen
Diese Methode kann eine DOMException
der folgenden Typen auslösen:
TransactionInactiveError
DOMException
-
Wird ausgelöst, wenn die Transaktion dieses IDBCursors inaktiv ist.
ReadOnlyError
DOMException
-
Wird ausgelöst, wenn der Transaktionsmodus schreibgeschützt ist.
InvalidStateError
DOMException
-
Wird ausgelöst, wenn der Cursor mit
IDBindex.openKeyCursor
erstellt wurde, derzeit iteriert wird oder über sein Ende hinaus iteriert wurde.
Beispiele
In diesem einfachen Fragment erstellen wir eine Transaktion, rufen einen Objektspeicher ab und verwenden dann einen
Cursor, um alle Datensätze im Objektspeicher zu durchlaufen. Wenn der
albumTitle
des aktuellen Cursors "Grace under pressure" ist, löschen wir diesen
gesamten Datensatz mit const request = cursor.delete();
.
Der Cursor erfordert nicht, dass wir die Daten basierend auf einem Schlüssel auswählen; wir können einfach alle
Daten abrufen. Beachten Sie auch, dass Sie in jeder Iteration der Schleife Daten aus dem aktuellen
Datensatz unter dem Cursor-Objekt mit cursor.value.foo
abrufen können. Für ein vollständiges
funktionierendes Beispiel siehe unser IDBCursor-Beispiel (Beispiel live ansehen).
function deleteResult() {
list.textContent = "";
const transaction = db.transaction(["rushAlbumList"], "readwrite");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
if (cursor.value.albumTitle === "Grace under pressure") {
const request = cursor.delete();
request.onsuccess = () => {
console.log(
"Deleted that mediocre album from 1984. Even Power windows is better.",
);
};
} else {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
}
cursor.continue();
} else {
console.log("Entries displayed.");
}
};
}
Spezifikationen
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbcursor-delete① |
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).