IDBTransaction: commit() メソッド
BaselineWidely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
IDBTransaction
インターフェイスのcommit()
メソッドは、実行中のトランザクションで呼ばれると、トランザクションをコミットします。
なお、commit()
は通常呼ばれる必要は ありません。未完了の要求がすべて完了し、新しい要求がなされないとき、トランザクションは自動でコミットされます。commit()
は未完了の要求に関するイベントが発火するのを待たずにコミットプロセスを開始するために使用できます。
実行中でないトランザクションで呼ばれたときは、InvalidStateError
DOMException
を投げます。
メモ: この機能はウェブワーカー内で利用可能です。
構文
js
commit()
引数
なし
返値
なし (undefined
)
例外
InvalidStateError
DOMException
トランザクションの状態が実行中でないとき投げられます。
例
js
const note = document.getElementById("notifications");// データベースの読み書きトランザクションを開き、データを追加する準備をするconst transaction = db.transaction(["myDB"], "readwrite");// トランザクションを開くのに成功したら報告するtransaction.oncomplete = (event) => { note.innerHTML += "<li>トランザクション完了: データベースの変更が完了しました。</li>";};transaction.onerror = (event) => { note.innerHTML += "<li>トランザクションはエラーのため開けませんでした。アイテムは重複させられません。</li>";};// トランザクション上でオブジェクトストアを生成するconst objectStore = transaction.objectStore("myObjStore");// オブジェクトストアに newItem オブジェクトを追加するconst objectStoreRequest = objectStore.add(newItem[0]);objectStoreRequest.onsuccess = (event) => { // 要求の成功を報告する (これは、アイテムがデータベースにに正常に格納されたことを意味しません。 // これを知るには、transaction.onsuccess を用いる必要があります) note.innerHTML += "<li>要求に成功しました。</li>";};// 今すぐ変更をデータベースにコミットさせるtransaction.commit();
仕様書
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbtransaction-commit② |
ブラウザーの互換性
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キー範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例:To-do Notifications (動く例を見る)