IDBFactory: deleteDatabase() Methode
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.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die deleteDatabase() Methode der IDBFactory Schnittstelle fordert die Löschung einer Datenbank an. Die Methode gibt sofort ein IDBOpenDBRequest-Objekt zurück und führt den Löschvorgang asynchron durch.
Syntax
// For the current standard:
deleteDatabase(name)
// For the experimental version with `options` (see below):
deleteDatabase(name)
deleteDatabase(name, options)
Parameter
name-
Der Name der Datenbank, die Sie löschen möchten. Beachten Sie, dass der Versuch, eine nicht vorhandene Datenbank zu löschen, keine Ausnahme auslöst, im Gegensatz zu
IDBDatabase.deleteObjectStore(), das eine Ausnahme auslöst, wenn der benannte Objekt-Store nicht existiert. optionsOptional-
In Gecko, seit Version 26, können Sie einen nicht standardmäßigen optionalen Speicherparameter angeben, der festlegt, ob Sie eine
permanent(der Standardwert) IndexedDB oder eine IndexedDB imtemporarySpeicher (auch bekannt als gemeinsamer Pool) löschen möchten.
Rückgabewert
Ein IDBOpenDBRequest, bei dem nachfolgende Ereignisse im Zusammenhang mit dieser Anfrage ausgelöst werden.
Wenn der Vorgang erfolgreich ist, ist der Wert der result-Eigenschaft der Anfrage null.
Beschreibung
Wenn die Datenbank erfolgreich gelöscht wird, wird ein success-Ereignis auf dem von deleteDatabase() zurückgegebenen Anforderungsobjekt ausgelöst, wobei sein result auf undefined gesetzt ist. Wenn während der Löschung ein Fehler auftritt, wird ein error-Ereignis auf dem von dieser Methode zurückgegebenen Anforderungsobjekt ausgelöst.
Wenn deleteDatabase() aufgerufen wird, erhalten alle anderen offenen Verbindungen zu dieser speziellen Datenbank ein versionchange-Ereignis, das es ihnen ermöglicht, sich zu schließen, damit die Löschung fortgesetzt werden kann.
Wenn eine Verbindung als Reaktion auf das versionchange-Ereignis nicht geschlossen wird, wird die Löschung blockiert: Das success-Ereignis der Anfrage wird nicht ausgelöst, und ein blocked-Ereignis wird stattdessen auf der Anfrage ausgelöst. Die Löschung bleibt in Wartestellung, bis jede Verbindung zur Datenbank geschlossen ist.
Um die Aktion abzuschließen, schließen Sie jede Verbindung. Dies geschieht normalerweise, indem IDBDatabase.close() innerhalb des versionchange-Ereignishandlers aufgerufen wird:
// db is an open connection (e.g. from a previous indexedDB.open() success)
db.addEventListener("versionchange", () => {
db.close();
});
Beispiele
>Grundlegende Verwendung
const dbDeleteRequest = indexedDB.deleteDatabase("toDoList");
dbDeleteRequest.onerror = (event) => {
console.error("Error deleting database.");
};
dbDeleteRequest.onsuccess = (event) => {
console.log("Database deleted successfully");
console.log(event.result); // should be undefined
};
Spezifikationen
| Spezifikation |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbfactory-deletedatabase①> |
Browser-Kompatibilität
Siehe auch
- Verwenden von IndexedDB
- Starten von Transaktionen:
IDBDatabase - Verwenden von Transaktionen:
IDBTransaction - Festlegen eines Schlüsselspektrums:
IDBKeyRange - Abrufen und Ändern Ihrer Daten:
IDBObjectStore - Verwenden von Cursoren:
IDBCursor - Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).