IDBFactory: open() メソッド
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
メモ: この機能はウェブワーカー内で利用可能です。
open()
は IDBFactory
インターフェイスのメソッドで、データベースへの接続を開くことを要求します。
このメソッドは即座に IDBOpenDBRequest
オブジェクトを返し、そして非同期でデータベースを開きます。
操作が成功した場合、このメソッドから返されるリクエストオブジェクトに result
の属性として接続のための新しい IDBDatabase
オブジェクトが設定されて、success
イベントが発生します。
upgradeneeded
, blocked
, versionchange
イベントが発生することがあります。
構文
open(name)
open(name, version)
引数
name
-
データベースの名前。
version
省略可-
省略可。データベースを開くバージョン。バージョンが提供されずにデータベースが存在した場合、データベースへの接続はバージョンを変更せずに開かれます。 バージョンが提供されず、データベースも存在しなかった場合、バージョン番号
1
が生成されます。
返値
この要求に関連のある連続したイベントが発生する IDBOpenDBRequest
オブジェクト。
操作に成功した場合、リクエストの result
プロパティの値は、データベースへの接続を表す IDBDatabase
オブジェクトとなります。
例外
TypeError
-
version
の値がゼロかマイナスの値、または数値でない場合。
例
open
を現在の仕様書の version
引数を付けて呼び出す例です。
const request = window.indexedDB.open("toDoList", 4);
次のコードスニペットは、データベースを開く要求をして、成功の場合と失敗の場合のイベントハンドラーを登録しています。完璧に動作する例は、To-do Notifications アプリケーション (動く例を見る) を見てください。
const note = document.querySelector("ul");
// データベースのバージョン 4 を開きましょう。
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// これら 2 個のイベントハンドラーは、データベースが正常に開かれたか、
// 失敗した時に動作します。
DBOpenRequest.onerror = (event) => {
note.appendChild(document.createElement("li")).textContent =
"データベースの読み込みに失敗しました。";
};
DBOpenRequest.onsuccess = (event) => {
note.appendChild(document.createElement("li")).textContent =
"データベースを初期化しました。";
// データベースを開いた結果を変数 db に保存します。
// これはトランザクションを開くときなど、
// 後でたくさん使います。
db = DBOpenRequest.result;
};
仕様書
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbfactory-open② |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- ブラウザーのストレージ容量と削除基準
- トランザクションの開始 :
IDBDatabase
- トランザクションの使用 :
IDBTransaction
- キーの範囲の設定 :
IDBKeyRange
- データの取得と変更 :
IDBObjectStore
- カーソルの使用 :
IDBCursor
- リファレンス例 : To-do Notifications (動く例を見る)