IDBFactory: databases() メソッド
メモ: この機能はウェブワーカー内で利用可能です。
databases
は IDBFactory
インターフェイスのメソッドで、利用できるすべてのデータベースの名前とバージョンを格納したオブジェクトの配列を履行される Promise
を返します。
これはデータベースのスナップショットで、主にウェブアプリケーションがどのようなデータベースが作成されたかを調べるためのものです。例えば、以前のバージョンのアプリケーションコードによって作成されたデータベースをクリーンアップするためのものです。
構文
databases()
引数
なし。
返値
例外
SecurityError
DOMException
-
メソッドが不透明なオリジンから呼ばれたときに発生します。
UnknownError
DOMException
-
何らかの理由で利用できるデータベースを設定できない場合に発生します。
例
データベースの作成と列挙
この例では、いくつかのデータベースを作成したり開いたりします。 各データベースの初期化に成功すると、利用できるデータベースをすべて一覧表示します。
JavaScript
最初に、利用できるデータベースを取得し、ログ出力するために使用する関数を定義します。
これは indexedDB.databases()
が返すプロミスを待ち、配列を反復処理して各要素の値を返します。
async function getDb() {
const databases = await indexedDB.databases();
log("List databases:");
databases.forEach((element) => {
log(`name: ${element.name}, version: ${element.version}`);
});
}
上記の関数がどのように使用されるかを示すために、下記では 2 つのデータベースを作成しています。 それぞれのデータベースについて、データベースを開くためのログを出力します。 また、初期化に成功した(あるいはエラーが発生した)場合にもログを出力し、利用できるデータベースについてもログを出力します。
// 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① |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キーの範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)