IDBObjectStore: delete()-Methode
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die delete()
-Methode des IDBObjectStore
-Interfaces gibt ein IDBRequest
-Objekt zurück und löscht in einem separaten Thread den oder die angegebenen Datensätze.
Es kann entweder ein Schlüssel oder ein IDBKeyRange
übergeben werden, was erlaubt, einen oder mehrere Datensätze aus einem Speicher zu löschen. Um alle Datensätze in einem Speicher zu löschen, verwenden Sie IDBObjectStore.clear
.
Beachten Sie, dass, wenn Sie einen IDBCursor
verwenden, Sie die IDBCursor.delete()
-Methode nutzen können, um den aktuellen Datensatz effizienter zu löschen – ohne explizit den Schlüssel des Datensatzes suchen zu müssen.
Syntax
delete(key)
Parameter
key
-
Der Schlüssel des zu löschenden Datensatzes oder ein
IDBKeyRange
zum Löschen aller Datensätze mit Schlüsseln im Bereich.
Rückgabewert
Ein IDBRequest
-Objekt, auf dem folgende Ereignisse im Zusammenhang mit dieser Operation ausgelöst werden.
Wenn die Operation erfolgreich ist, ist der Wert der result
-Eigenschaft der Anforderung undefined
.
Ausnahmen
Diese Methode kann einen DOMException
der folgenden Typen auslösen:
TransactionInactiveError
DOMException
-
Wird ausgelöst, wenn die Transaktion dieses Objekt-Speichers inaktiv ist.
ReadOnlyError
DOMException
-
Wird ausgelöst, wenn der Transaktionsmodus des Objekt-Speichers schreibgeschützt ist.
InvalidStateError
DOMException
-
Wird ausgelöst, wenn der Objekt-Speicher gelöscht wurde.
DataError
DOMException
-
Wird ausgelöst, wenn
key
kein gültiger Schlüssel oder ein Schlüsselbereich ist.
Beispiele
Das folgende Codebeispiel zeigt die Funktion deleteItem()
,
die Teil der Beispiel-App für To-do-Benachrichtigungen ist. Diese App speichert To-do-Listenartikel unter Verwendung von IndexedDB. Sie können den vollständigen Code der App auf GitHub ansehen und die App live ausprobieren.
Die Funktion deleteItem()
wird aufgerufen, wenn der Benutzer den
Button zum Löschen eines To-do-Listenartikels klickt. Der Artikelschlüssel ist im 'data-task'
Daten-Attribut des Buttons festgelegt, sodass die Funktion weiß, welcher Artikel gelöscht werden soll. Die Funktion öffnet eine Datenbanktransaktion, in der der Artikel gelöscht wird, indem sie seinen Schlüssel angibt. Wenn die Transaktion abgeschlossen ist, aktualisiert die Funktion die App-Oberfläche, um zu berichten, dass der Artikel gelöscht wurde.
Beachten Sie, dass in dieser Funktion db
eine globale Variable ist,
die sich auf ein IDBDatabase
-Objekt bezieht, das bei Laden der App initialisiert wird.
function deleteItem(event) {
// retrieve the name of the task we want to delete
let dataTask = event.target.getAttribute("data-task");
// open a database transaction and delete the task, finding it by the name we retrieved above
let transaction = db.transaction(["toDoList"], "readwrite");
let request = transaction.objectStore("toDoList").delete(dataTask);
// report that the data item has been deleted
transaction.oncomplete = () => {
// delete the parent of the button, which is the list item, so it no longer is displayed
event.target.parentNode.parentNode.removeChild(event.target.parentNode);
note.appendChild(document.createElement("li")).textContent =
`Task "${dataTask}" deleted.`;
};
}
Spezifikationen
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbobjectstore-delete① |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Einstellen eines Bereichs von Schlüsseln:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursors:
IDBCursor
- Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).