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.
Please take two minutes to fill out our short survey.
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① |
ブラウザーの互換性
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キー範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)