IDBObjectStore: deleteIndex() メソッド
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.
IDBObjectStore
インターフェイスの deleteIndex()
メソッドは、バージョンの更新時に用いられ、接続中のデータベース内の指定した名前のインデックスを破棄します。
なお、このメソッドは VersionChange
トランザクションモードのコールバックからのみ呼び出せます。また、このメソッドは IDBObjectStore.indexNames
プロパティを同期的に変更します。
メモ: この機能はウェブワーカー内で利用可能です。
構文
deleteIndex(indexName)
引数
indexName
-
削除する既存のインデックスの名前です。
返値
なし (undefined
)
例外
InvalidStateError
DOMException
-
このメソッドが
versionchange
トランザクションモードのコールバックから呼ばれていないとき投げられます。 TransactionInactiveError
DOMException
-
この
IDBObjectStore
が属するトランザクションが実行中でない (たとえば、削除されたか取り除かれた) とき投げられます。 NotFoundError
DOMException
-
指定された名前のインデックス (大文字と小文字を区別します) がデータベースに無いとき投げられます。
例
以下の例では、より高いバージョン番号のデータベースが読み込まれたときにデータベースの構造を更新する onupgradeneeded
のハンドラーがあります。IDBObjectStore.createIndex
を用いてオブジェクトストアに新しいインデックスを作成し、その後 deleteIndex()
を用いて不要な古いインデックスを削除します。動く例全体は、To-do Notifications アプリケーションを参照してください。(動く例を見る)
let db;
// データベースを開く
const DBOpenRequest = window.indexedDB.open("toDoList", 4);
// 以下の 2 個のイベントハンドラーは、データベースを開くのに成功したか、失敗した時に動く
DBOpenRequest.onerror = (event) => {
note.innerHTML += "<li>データベース読み込みエラー</li>";
};
DBOpenRequest.onsuccess = (event) => {
note.innerHTML += "<li>データベースを初期化しました。</li>";
// データベースを開いた結果を変数 db に格納する。これは後でよく使う
db = event.target.result;
// displayData() 関数を実行し、IDB に格納済の to-do リストデータすべてをタスクリストに入れる
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 });
objectStore.deleteIndex("seconds");
objectStore.deleteIndex("contact");
};
仕様書
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbobjectstore-deleteindex① |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キー範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)