IDBFactory: databases() メソッド

メモ: この機能はウェブワーカー内で利用可能です。

databasesIDBFactory インターフェイスのメソッドで、利用できるすべてのデータベースの名前とバージョンを格納したオブジェクトの配列を履行される Promise を返します。

これはデータベースのスナップショットで、主にウェブアプリケーションがどのようなデータベースが作成されたかを調べるためのものです。例えば、以前のバージョンのアプリケーションコードによって作成されたデータベースをクリーンアップするためのものです。

構文

js
databases()

引数

なし。

返値

利用できるデータベースのスナップショットを表すオブジェクトの配列で履行される(または下記エラー/例外で拒否される) Promise です。

各配列オブジェクトには、以下のプロパティがあります。

name

データベースの名前です。

version

データベースのバージョンです。

なお、返されるオブジェクトの並びは未定義です。

例外

SecurityError DOMException

メソッドが不透明なオリジンから呼ばれたときに発生します。

UnknownError DOMException

何らかの理由で利用できるデータベースを設定できない場合に発生します。

データベースの作成と列挙

この例では、いくつかのデータベースを作成したり開いたりします。 各データベースの初期化に成功すると、利用できるデータベースをすべて一覧表示します。

JavaScript

最初に、利用できるデータベースを取得し、ログ出力するために使用する関数を定義します。 これは indexedDB.databases() が返すプロミスを待ち、配列を反復処理して各要素の値を返します。

js
async function getDb() {
  const databases = await indexedDB.databases();
  log("List databases:");
  databases.forEach((element) => {
    log(`name: ${element.name}, version: ${element.version}`);
  });
}

上記の関数がどのように使用されるかを示すために、下記では 2 つのデータベースを作成しています。 それぞれのデータベースについて、データベースを開くためのログを出力します。 また、初期化に成功した(あるいはエラーが発生した)場合にもログを出力し、利用できるデータベースについてもログを出力します。

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();
});

結果

結果を下記に示します。データベースとその順序を取得するのにかかる時間は未定義であることに注意してください。

仕様書

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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
databases

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報