IDBTransaction: commit() メソッド
Baseline
広く利用可能
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2021年9月以降、すべてのブラウザーで利用可能です。
IDBTransaction インターフェイスの commit() メソッドは、実行中のトランザクションで呼ばれると、トランザクションをコミットします。
なお、commit() は通常呼ばれる 必要は ありません。未完了の要求がすべて完了し、新しい要求がなされないとき、トランザクションは自動でコミットされます。commit() は未完了の要求に関するイベントが発火するのを待たずにコミットプロセスを開始するために使用できます。
実行中でないトランザクションで呼ばれたときは、InvalidStateError DOMException を投げます。
メモ: この機能はウェブワーカー内で利用可能です。
構文
js
commit()
引数
なし
返値
なし (undefined)
例外
InvalidStateErrorDOMException-
トランザクションの状態が実行中でないとき投げられます。
例
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();
仕様書
| 仕様書 |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbtransaction-commit②> |
ブラウザーの互換性
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase - トランザクションの使用:
IDBTransaction - キー範囲の設定:
IDBKeyRange - データの取得と変更:
IDBObjectStore - カーソルの使用:
IDBCursor - リファレンス例: To-do Notifications (動く例を見る)