IDBTransaction: error プロパティ

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.

* Some parts of this feature may have varying levels of support.

IDBTransaction インターフェイスの IDBTransaction.error プロパティは、トランザクションが失敗したときにエラーの種類を返します。

メモ: この機能はウェブワーカー内で利用可能です。

関連するエラーが入った DOMException を返すか、エラーが無いときは null を返します。

エラーを発生させた要求オブジェクトと同じエラーの参照であることも、トランザクションの失敗 (QuotaExceededError など) であることもあります。

トランザクションが完了していないか、正常にコミットして完了した場合は、このプロパティは null です。

以下のコード断片では、データベースの読み書きトランザクションを開き、オブジェクトストアにデータを追加します。トランザクションのイベントハンドラーに設定した関数により、成功時または失敗時にトランザクションを開いた結果を報告する点にも注目してください。transaction.onerror = (event) => { }; ブロックに注目してください。これは、トランザクションの失敗時何がいけなかったのかを報告する助けとして transaction.error を用いています。動く例全体は、To-do Notifications アプリケーションを参照してください。(動く例を見る)

js
const note = document.getElementById("notifications");

// IDB データを保存する db オブジェクトのインスタンス
let db;

// データベースを開く
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = (event) => {
  note.innerHTML += "<li>データベースを初期化しました。</li>";

  // データベースを開いた結果を変数 db に保存する
  // これは後でよく使う
  db = DBOpenRequest.result;

  // addData() 関数を実行し、データベースにデータを追加する
  addData();
};

function addData() {
  // IDB に挿入できる新しいオブジェクトを生成する
  const newItem = [
    {
      taskTitle: "Walk dog",
      hours: 19,
      minutes: 30,
      day: 24,
      month: "December",
      year: 2013,
      notified: "no",
    },
  ];

  // データベースの読み書きトランザクションを開き、データを追加する準備をする
  const transaction = db.transaction(["toDoList"], "readwrite");

  // トランザクションを開くのに成功したら報告する
  transaction.oncomplete = (event) => {
    note.innerHTML +=
      "<li>トランザクション完了: データベースの変更が完了しました。</li>";
  };

  transaction.onerror = (event) => {
    note.innerHTML += `<li>以下のエラーによりトランザクションを開けませんでした: ${transaction.error}</li>`;
  };

  // トランザクション上でオブジェクトストアを生成する
  const objectStore = transaction.objectStore("toDoList");

  // オブジェクトストアに newItem オブジェクトを追加する
  const objectStoreRequest = objectStore.add(newItem[0]);

  objectStoreRequest.onsuccess = (event) => {
    // 要求の成功を報告する (これは、アイテムがデータベースにに正常に格納されたことを意味しません。
    // これを知るには、transaction.onsuccess を用いる必要があります)
    note.innerHTML += "<li>要求に成功しました。</li>";
  };
}

仕様書

Specification
Indexed Database API 3.0
# ref-for-dom-idbtransaction-error①

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
error
DOMException value instead of DOMError

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support
No support
No support

関連情報