IDBObjectStore: delete() メソッド
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
インターフェイスの delete()
メソッドは、IDBRequest
オブジェクトを返し、別スレッドで指定のレコードまたはレコード群を削除します。
キーまたは IDBKeyRange
を渡すことができ、これによってオブジェクトストアから 1 個または複数のレコードを削除できます。オブジェクトストア内の全レコードを削除するには、IDBObjectStore.clear
を使用してください。
IDBCursor
を使用している場合は、IDBCursor.delete()
メソッドを用いることで現在のレコードをより効率よく削除できることを覚えておいてください。この方法では、レコードのキーを明示的に検索せずにすみます。
メモ: この機能はウェブワーカー内で利用可能です。
構文
delete(key)
引数
key
-
削除するレコードのキー、もしくはキーが範囲内のレコードをすべて削除する
IDBKeyRange
です。
返値
この操作に関係する今後のイベントが発火する IDBRequest
オブジェクトです。
操作に成功した場合は、この要求の result
プロパティの値は undefined
になります。
例外
このメソッドは、以下の種類のいずれかの DOMException
を投げる可能性があります。
TransactionInactiveError
DOMException
-
このオブジェクトストアのトランザクションが実行中でないとき投げられます。
ReadOnlyError
DOMException
-
このオブジェクトストアのトランザクションのモードが読み取り専用のとき投げられます。
InvalidStateError
DOMException
-
このオブジェクトストアが削除済のとき投げられます。
DataError
DOMException
例
以下のコード断片では、To-do Notifications サンプルアプリケーションの一部である deleteItem()
関数を紹介しています。このアプリケーションは、to-do リストの項目を IndexedDB を用いて保存します。このアプリケーションのコード全体を GitHub で見ることも、動くアプリケーションを試すこともできます。
deleteItem()
関数は、ユーザーが to-do リストの項目を削除する項目をクリックすると呼び出されます。アイテムキーはボタンの 'data-task'
データ属性で設定されるので、削除するアイテムを特定できます。この関数はデータベースのトランザクションを開き、その中でキーを指定してアイテムを削除します。トランザクションの完了時、この関数はアプリケーションの UI を更新してアイテムが削除されたことを報告します。
なお、この関数内で使われる db
はアプリケーションの読み込み時に初期化され、IDBDatabase
オブジェクトを参照するグローバル変数です。
function deleteItem(event) {
// 削除するタスクの名前を取得する
let dataTask = event.target.getAttribute("data-task");
// データベースのトランザクションを開始し、タスクを上で取得した名前で検索して削除する
let transaction = db.transaction(["toDoList"], "readwrite");
let request = transaction.objectStore("toDoList").delete(dataTask);
// データアイテムが削除されたことを報告する
transaction.oncomplete = () => {
// ボタンの親 (リストアイテム) を削除し、表示を消す
event.target.parentNode.parentNode.removeChild(event.target.parentNode);
note.innerHTML += `<li>タスク "${dataTask}" が削除されました。</li>`;
};
}
仕様書
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbobjectstore-delete① |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キー範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)