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 des IDBFactory-Interfaces fordert die Löschung einer Datenbank an. Die Methode gibt sofort ein IDBOpenDBRequest-Objekt zurück und führt den Löschvorgang asynchron aus.
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 Objektspeicher nicht vorhanden ist. optionsOptional-
In Gecko können Sie seit Version 26 einen nicht standardmäßigen optionalen Speicherparameter angeben, der festlegt, ob Sie eine
permanent-IndexedDB (der Standardwert) oder eine indexedDB imtemporary-Speicher (auch als Shared Pool bezeichnet) löschen möchten.
Rückgabewert
Ein IDBOpenDBRequest, auf dem nachfolgende Ereignisse im Zusammenhang mit dieser Anfrage ausgelöst werden.
Wenn der Vorgang erfolgreich ist, ist der Wert der result-Eigenschaft der Anfrage undefined.
Beschreibung
Wenn die Datenbank erfolgreich gelöscht wird, wird auf dem von deleteDatabase() zurückgegebenen Anfrageobjekt ein success-Ereignis ausgelöst, dessen result auf undefined gesetzt ist. Tritt während des Löschens ein Fehler auf, wird auf dem von dieser Methode zurückgegebenen Anfrageobjekt ein error-Ereignis ausgelöst.
Wenn deleteDatabase() aufgerufen wird, wird an alle anderen offenen Verbindungen zu dieser bestimmten Datenbank ein versionchange-Ereignis gesendet, damit sie geschlossen werden können, sodass die Löschung fortgesetzt werden kann.
Wenn eine Verbindung nicht als Reaktion auf das versionchange-Ereignis geschlossen wird, wird die Löschung blockiert: Das success-Ereignis der Anfrage wird nicht ausgelöst, und stattdessen wird auf der Anfrage ein blocked-Ereignis ausgelöst. Die Löschung bleibt ausstehend, bis jede Verbindung zur Datenbank geschlossen wurde.
Schließen Sie jede Verbindung, damit der Vorgang abgeschlossen werden kann. Dies geschieht typischerweise durch den Aufruf von IDBDatabase.close() innerhalb des Ereignishandlers für versionchange:
// 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(dbDeleteRequest.result); // undefined
};
Spezifikationen
| Spezifikation |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbfactory-deletedatabase①> |
Browser-Kompatibilität
Siehe auch
- IndexedDB verwenden
- Transaktionen starten:
IDBDatabase - Transaktionen verwenden:
IDBTransaction - Einen Bereich von Schlüsseln festlegen:
IDBKeyRange - Ihre Daten abrufen und ändern:
IDBObjectStore - Cursor verwenden:
IDBCursor - Referenzbeispiel: To-do Notifications (Beispiel live ansehen).