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 プロパティを同期的に変更します。

メモ: この機能はウェブワーカー内で利用可能です。

構文

js
deleteIndex(indexName)

引数

indexName

削除する既存のインデックスの名前です。

返値

なし (undefined)

例外

InvalidStateError DOMException

このメソッドが versionchange トランザクションモードのコールバックから呼ばれていないとき投げられます。

TransactionInactiveError DOMException

この IDBObjectStore が属するトランザクションが実行中でない (たとえば、削除されたか取り除かれた) とき投げられます。

NotFoundError DOMException

指定された名前のインデックス (大文字と小文字を区別します) がデータベースに無いとき投げられます。

以下の例では、より高いバージョン番号のデータベースが読み込まれたときにデータベースの構造を更新する onupgradeneeded のハンドラーがあります。IDBObjectStore.createIndex を用いてオブジェクトストアに新しいインデックスを作成し、その後 deleteIndex() を用いて不要な古いインデックスを削除します。動く例全体は、To-do Notifications アプリケーションを参照してください。(動く例を見る)

js
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①

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
deleteIndex

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報