IDBOpenDBRequest
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since 2015年7月.
IndexedDB API の IDBOpenDBRequest
インターフェイスは、固有のイベントハンドラー属性を用い、(IDBFactory.open
や IDBFactory.deleteDatabase
により行われた) データベースのオープンや削除の要求の結果へのアクセスを提供します。
メモ: この機能はウェブワーカー内で利用可能です。
インスタンスプロパティ
親の IDBRequest
および EventTarget
からプロパティを継承しています。
インスタンスメソッド
メソッドはありませんが、親の IDBRequest
および EventTarget
からメソッドを継承しています。
イベント
親インターフェイスの IDBRequest
および EventTarget
で定義されているイベントも IDBOpenDBRequest
オブジェクトで発生させることができます。
addEventListener()
を用いるか、このインターフェイスの oneventname
プロパティにイベントリスナーを代入することで、一般のイベントおよび固有のイベントを監視できます。
このインターフェイスに固有のイベントは、以下です。
blocked
-
データベースへのオープン中の接続が、同じデータベースの
versionchange
トランザクションをブロックしているとき発火します。onblocked
プロパティを用いても利用可能です。 upgradeneeded
-
現在のバージョンよりも高いバージョン番号でデータベースをオープンしようとしたとき発火します。
onupgradeneeded
プロパティを用いても利用可能です。
例
この例では、高いバージョン番号のデータベースをを読み込もうとした場合に、onupgradeneeded
ハンドラーによりデータベースの構造を更新します。動く例全体は、To-do Notifications アプリケーションを見てください。(動く例を見る)
let db; // 我々のデータベースを開きましょう const DBOpenRequest = window.indexedDB.open("toDoList", 4); // これらのイベントハンドラーは、開かれているデータベースを扱います DBOpenRequest.onerror = (event) => { note.innerHTML += "<li>データベースの読み込み中にエラーが発生しました。</li>"; }; DBOpenRequest.onsuccess = (event) => { note.innerHTML += "<li>データベースの初期化が完了しました。</li>"; // データベースを開いた結果を変数 db に格納します。 // これは後でたくさん使います。 db = DBOpenRequest.result; // IDB に既に入っている TO-DO リストのデータ全てを // タスクリストに入れるため、displayData() 関数を実行します。 displayData(); }; // このイベントは、データベースがまだ作成されていないか、 // 上の window.indexedDB.open の行で新しいバージョン番号が // 指定されたかで、新しいバージョンのデータベースを // 作成する必要がある場合を扱います。 // これは最近のブラウザーでしか実装されていません。 DBOpenRequest.onupgradeneeded = (event) => { const db = event.target.result; db.onerror = (event) => { note.innerHTML += "<li>データベースの読み込み中にエラーが発生しました。</li>"; }; // このデータベース用の objectStore を作成します const objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle", }); // objectStore にどのようなアイテムを保存するかを定義します objectStore.createIndex("hours", "hours", { unique: false }); objectStore.createIndex("minutes", "minutes", { unique: false }); objectStore.createIndex("day", "day", { unique: false }); objectStore.createIndex("month", "month", { unique: false }); objectStore.createIndex("year", "year", { unique: false }); objectStore.createIndex("notified", "notified", { unique: false }); };
仕様書
Specification |
---|
Indexed Database API 3.0> # idbopendbrequest> |
ブラウザーの互換性
Loading…
関連情報
- IndexedDB の使用
- トランザクションの開始s:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キーの範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)