IDBOpenDBRequest: upgradeneeded イベント
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
upgradeneeded イベントは、現在のバージョンより高いバージョン番号でデータベースを開こうとしたとき発火します。
このイベントはキャンセルできず、バブリングしません。
構文
addEventListener() のようなメソッドでイベント名を使うか、イベントハンドラープロパティを設定します。
js
addEventListener("upgradeneeded", (event) => {});
onupgradeneeded = (event) => {};
イベント型
IDBVersionChangeEvent です。Event を継承します。
イベントプロパティ
親の Event インターフェイスからもプロパティを継承します。
IDBVersionChangeEvent.oldVersion読取専用-
データベースの古いバージョンを返します。
IDBVersionChangeEvent.newVersion読取専用-
データベースの新しいバージョンを返します。
例
この例ではデータベースを開き、upgradeneeded イベントの処理としてオブジェクトストアに必要な更新を行います。
js
// データベースを開きます
const dBOpenRequest = window.indexedDB.open("toDoList", 4);
dBOpenRequest.addEventListener("upgradeneeded", (event) => {
const db = event.target.result;
console.log(`バージョン ${db.version} に更新します`);
// このデータベース用の 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 });
});
これは同じ例ですが、onupgradeneeded イベントハンドラープロパティを用います。
js
// データベースを開きます
const dBOpenRequest = window.indexedDB.open("toDoList", 4);
dBOpenRequest.onupgradeneeded = (event) => {
const db = event.target.result;
console.log(`バージョン ${db.version} に更新します`);
// このデータベース用の 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 });
};