IDBFactory: databases()-Methode
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Die databases
-Methode des IDBFactory
-Interfaces gibt ein Promise
zurück, das mit einem Array von Objekten erfüllt wird, die den Namen und die Version aller verfügbaren Datenbanken enthalten.
Dies ist ein Schnappschuss der Datenbanken, der hauptsächlich dazu gedacht ist, Webanwendungen zu ermöglichen, zu prüfen, welche Datenbanken erstellt wurden – um beispielsweise Datenbanken, die von früheren Versionen des Anwendungscodes erstellt wurden, zu bereinigen.
Syntax
databases()
Parameter
Keine.
Rückgabewert
Ein Promise
, das mit einem Array von Objekten erfüllt wird, die einen Schnappschuss der verfügbaren Datenbanken darstellen (oder mit den unten aufgeführten Fehlern/Ausnahmen abgelehnt wird).
Jedes Arrayobjekt hat die folgenden Eigenschaften:
Beachten Sie, dass die Reihenfolge der zurückgegebenen Objekte nicht definiert ist.
Ausnahmen
SecurityError
DOMException
-
Wird ausgelöst, wenn die Methode von einem intransparenten Ursprung aufgerufen wird oder der Benutzer den Speicher deaktiviert hat.
UnknownError
DOMException
-
Wird ausgelöst, wenn aus irgendeinem Grund die Menge der verfügbaren Datenbanken nicht bestimmt werden kann.
Beispiele
Erstellen und Auflisten von Datenbanken
Dieses Beispiel erstellt/öffnet mehrere Datenbanken. Bei erfolgreicher Initialisierung jeder Datenbank listet es alle verfügbaren Datenbanken auf.
JavaScript
Zuerst definieren wir die Funktion, die verwendet wird, um die verfügbaren Datenbanken zu erhalten und zu protokollieren.
Diese wartet auf das von indexedDB.databases()
zurückgegebene Promise und iteriert dann das Array und listet die Werte jedes Elements auf:
async function getDb() {
const databases = await indexedDB.databases();
log("List databases:");
databases.forEach((element) => {
log(`name: ${element.name}, version: ${element.version}`);
});
}
Um zu demonstrieren, wie die obige Funktion verwendet wird, erstellen wir unten zwei Datenbanken. Für jede Datenbank protokollieren wir kurz bevor die Datenbank geöffnet wird. Wir protokollieren auch bei erfolgreicher Initialisierung (oder Fehler) und protokollieren dann auch die verfügbaren Datenbanken.
// Create a database named toDoList with default version (1)
const dbName1 = "toDoList";
log(`Opening: ${dbName1}`);
let DBOpenRequest = window.indexedDB.open(dbName1);
DBOpenRequest.addEventListener("error", (event) => {
log(`Error opening: ${dbName1}`);
getDb();
});
DBOpenRequest.addEventListener("success", (event) => {
log(`Initialized: ${dbName1}`);
getDb();
});
// Create database "AnotherDb"
const dbName2 = "AnotherDb";
log(`Opening ${dbName2}`);
DBOpenRequest = window.indexedDB.open(dbName2, 2);
DBOpenRequest.addEventListener("error", (event) => {
log(`Error opening: ${dbName2}`);
getDb();
});
DBOpenRequest.addEventListener("success", (event) => {
log(`Initialized: ${dbName2}`);
getDb();
});
Ergebnis
Das Ergebnis wird unten gezeigt. Beachten Sie, dass die Zeit, die benötigt wird, um die Datenbanken zu erhalten, und deren Reihenfolge nicht definiert sind.
Spezifikationen
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbfactory-databases① |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Festlegen eines Bereichs von Schlüsseln:
IDBKeyRange
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursors:
IDBCursor
- Referenzbeispiel: To-do Notifications (Beispiel live ansehen).