Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

IDBObjectStore: delete() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since ⁨Juli 2015⁩.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die delete()-Methode des IDBObjectStore-Interfaces gibt ein IDBRequest-Objekt zurück und löscht in einem separaten Thread den angegebenen Datensatz oder die Datensätze.

Entweder kann ein Schlüssel oder ein IDBKeyRange übergeben werden, sodass ein oder mehrere Datensätze aus einem Speicher gelöscht werden können. 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 verwenden können, um effizienter den aktuellen Datensatz zu löschen - ohne den Schlüssel des Datensatzes explizit nachschlagen zu müssen.

Syntax

js
delete(key)

Parameter

key

Der Schlüssel des zu löschenden Datensatzes oder ein IDBKeyRange, um alle Datensätze mit Schlüsseln im Bereich zu löschen.

Rückgabewert

Ein IDBRequest-Objekt, an 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 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

Der folgende Codeausschnitt zeigt die deleteItem()-Funktion, die Teil der Beispiel-App "To-do Notifications" ist. Diese App speichert To-do-Listen-Elemente mit IndexedDB. Sie können den vollständigen Code der App auf GitHub sehen und die App live ausprobieren.

Die deleteItem()-Funktion wird aufgerufen, wenn der Benutzer auf die Schaltfläche klickt, um ein To-do-Listen-Element zu löschen. Der Elementschlüssel wird im Datenattribut 'data-task' der Schaltfläche festgelegt, sodass die Funktion weiß, welches Element zu löschen ist. Die Funktion öffnet eine Datenbanktransaktion, um das Element mit seinem Schlüssel zu löschen. Wenn die Transaktion abgeschlossen ist, aktualisiert die Funktion die Benutzeroberfläche der App, um anzuzeigen, dass das Element gelöscht wurde.

Beachten Sie, dass in dieser Funktion db eine globale Variable ist, die auf ein IDBDatabase-Objekt verweist, das beim Laden der App initialisiert wird.

js
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

Siehe auch