IDBFactory: databases()-Methode

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

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

js
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:

name

Ein Datenbankname.

version

Die Datenbankversion.

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:

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

js
// 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