IDBTransaction: commit() メソッド

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.

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②

ブラウザーの互換性

BCD tables only load in the browser

関連情報