IDBCursor: delete()-Methode

Hinweis: Dieses Feature ist verfügbar in Web Workers.

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

js
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).

js
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