IDBFactory: databases()-Methode

Baseline 2024
Newly available

Since May 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Die databases-Methode der IDBFactory-Schnittstelle 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 überprüfen, welche Datenbanken erstellt wurden — um zum Beispiel Datenbanken zu bereinigen, die von früheren Versionen des Anwendungscodes erstellt wurden.

Syntax

js
databases()

Parameter

Keine.

Rückgabewert

Ein Promise, das mit einem Array von Objekten erfüllt wird, das einen Schnappschuss der verfügbaren Datenbanken darstellt (oder mit den unten aufgeführten Fehlern/Ausnahmen abgelehnt wird).

Jedes Objekt im Array 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 undurchsichtigen Ursprung aufgerufen wird oder der Benutzer den Speicher deaktiviert hat.

UnknownError DOMException

Wird ausgelöst, wenn die Menge der verfügbaren Datenbanken aus irgendeinem Grund nicht bestimmt werden kann.

Beispiele

Datenbanken erstellen und auflisten

Dieses Beispiel erstellt/öffnet eine Anzahl von Datenbanken. Bei erfolgreicher Initialisierung jeder Datenbank werden alle verfügbaren Datenbanken aufgelistet.

JavaScript

Zuerst definieren wir die Funktion, die verwendet wird, um die verfügbaren Datenbanken zu erhalten und zu protokollieren. Diese wartet auf das Promise, das von indexedDB.databases() zurückgegeben wird, und iteriert dann das Array, um die Werte jedes Elements aufzulisten:

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, unmittelbar bevor die Datenbank geöffnet wird. Wir protokollieren auch bei erfolgreicher Initialisierung (oder Fehler) und anschließend 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 zum Abrufen der Datenbanken benötigt wird, und ihre Reihenfolge nicht definiert sind.

Spezifikationen

Specification
Indexed Database API 3.0
# ref-for-dom-idbfactory-databases①

Browser-Kompatibilität

Siehe auch