IDBCursor: delete() メソッド
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月.
メモ: この機能はウェブワーカー内で利用可能です。
delete() は IDBCursor インターフェイスのメソッドで、IDBRequest オブジェクトを返し、別のスレッドで、カーソルの位置を変えずにカーソルが指しているレコードを削除します。レコードが削除されると、カーソルの値は null になります。
注意点として、delete() (や IDBCursor.update()) を IDBIndex.openKeyCursor() で取得したカーソルで呼ぶことはできません。このような用途のためには、かわりに IDBIndex.openCursor() を使用しないといけません。
構文
delete()
引数
なし。
返値
この操作に関連する後続のイベントが発生する IDBRequest オブジェクト。
処理が成功した場合、リクエストの result プロパティの値は undefined です。
例外
このメソッドは、以下の種類の DOMException を発生させる可能性があります。
TransactionInactiveErrorDOMException-
この
IDBCursorのトランザクションが活性状態でないとき投げられます。 ReadOnlyErrorDOMException-
トランザクションが読み取り専用モードのとき投げられます。
InvalidStateErrorDOMException-
カーソルが
IDBindex.openKeyCursorにより作成されたか、現在反復中であるか、終わりまで反復済みであるとき投げられます。
例
このシンプルな断片ではトランザクションを作成し、オブジェクトストアを取得し、カーソルを用いてオブジェクトストア内の全レコードを走査します。カーソルが指しているレコードの albumTitle が "Grace under pressure" である場合、const request = cursor.delete(); によりそのレコード全体を削除します。
カーソルを使用する場合、キーによりデータを選択する必要は無く、単に全てを取得できます。また、ループ中のそれぞれの繰り返しにおいて、カーソルオブジェクトが指しているレコードのデータを cursor.value.foo のようにして取得できます。動く例全体は、IDBCursor example を参照してください。(動く例を見る)
function deleteResult() {
list.textContent = "";
const transaction = db.transaction(["rushAlbumList"], "readwrite");
const objectStore = transaction.objectStore("rushAlbumList");
objectStore.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
if (cursor.value.albumTitle === "Grace under pressure") {
const request = cursor.delete();
request.onsuccess = () => {
console.log(
"Deleted that mediocre album from 1984. Even Power windows is better.",
);
};
} else {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
list.appendChild(listItem);
}
cursor.continue();
} else {
console.log("項目をを表示しました。");
}
};
}
仕様書
| Specification |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbcursor-delete①> |
ブラウザーの互換性
Loading…
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase - トランザクションの使用:
IDBTransaction - キーの範囲の設定:
IDBKeyRange - データの取得と変更:
IDBObjectStore - カーソルの使用:
IDBCursor - 参考例: To-do Notifications (動く例を見る)