IDBOpenDBRequest: upgradeneeded イベント
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月.
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 });
};
ブラウザーの互換性
Loading…