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

View in English Always switch to English

IDBTransaction: abort-Ereignis

Baseline
Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.

Das abort-Ereignis wird ausgelöst, wenn eine IndexedDB-Transaktion abgebrochen wird.

Dies kann aus einem der folgenden Gründe geschehen:

  • Ungültige Anfragen (z. B. der Versuch, denselben Schlüssel zweimal hinzuzufügen oder denselben Indexschlüssel einzufügen, wenn für den Schlüssel eine Eindeutigkeitsbedingung gilt).
  • Ein expliziter Aufruf von abort().
  • Eine nicht abgefangene Ausnahme im Erfolgs- oder Fehlerhandler der Anfrage.
  • Ein Ein-/Ausgabefehler (z. B. wenn das Schreiben auf den Datenträger fehlschlägt, weil dieser getrennt wurde, oder aufgrund eines anderen Betriebssystem- oder Hardwarefehlers).
  • Überschreitung des Speicherkontingents.

Dieses nicht abbrechbare Ereignis steigt zum zugehörigen IDBDatabase-Objekt auf.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

js
addEventListener("abort", (event) => { })

Alternativ können Sie den Handler der Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
onabort = (event) => { }

Ereignistyp

Ein generisches Event.

Aufsteigen des Ereignisses

Dieses Ereignis steigt zu IDBDatabase auf. Die Eigenschaft event.target verweist auf das IDBTransaction-Objekt, von dem das Ereignis ausgeht.

Weitere Informationen finden Sie unter Aufsteigen von Ereignissen.

Beispiele

Dieses Beispiel öffnet eine Datenbank (und erstellt sie, falls sie noch nicht existiert), öffnet dann eine Transaktion, fügt einen Listener für das abort-Ereignis hinzu und bricht anschließend die Transaktion ab, um das Ereignis auszulösen.

js
// Open the database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = () => {
    console.log("Error creating database");
  };

  // Create an objectStore for this database
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // define what data items the objectStore will contain
  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });
};

DBOpenRequest.onsuccess = (event) => {
  const db = DBOpenRequest.result;

  // open a read/write db transaction, ready for adding the data
  const transaction = db.transaction(["toDoList"], "readwrite");

  // add a listener for `abort`
  transaction.addEventListener("abort", () => {
    console.log("Transaction was aborted");
  });

  // abort the transaction
  transaction.abort();
};

Dasselbe Beispiel, jedoch mit Zuweisung des Event-Handlers an die Eigenschaft onabort (beachten Sie, dass dadurch andere über onabort hinzugefügte Event-Listener ersetzt werden, sofern vorhanden):

js
// Open the database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = () => {
    console.log("Error creating database");
  };

  // Create an objectStore for this database
  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // define what data items the objectStore will contain
  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });
};

DBOpenRequest.onsuccess = (event) => {
  const db = DBOpenRequest.result;

  // open a read/write db transaction, ready for adding the data
  const transaction = db.transaction(["toDoList"], "readwrite");

  // add a listener for `abort`
  transaction.onabort = (event) => {
    console.log("Transaction was aborted");
  };

  // abort the transaction
  transaction.abort();
};

Spezifikationen

Spezifikation
Indexed Database API 3.0
# eventdef-idbtransaction-abort

Browser-Kompatibilität

Siehe auch