IDBRequest.error

IDBRequest インターフェイスの読み取り専用プロパティ error は、要求が失敗したときエラーを返します。

注: この機能は Web Worker 内で利用可能です。

DOMException、もしくはエラーがないときは null です。例外オブジェクトでは、以下のエラー名が返されます。

AbortError

トランザクションをアボートすると、進行中の全ての要求がこのエラーとなります。

ConstraintError

制約を満たさないデータを追加しようとしたことを示します。これはデータストアやインデックスの作成用の例外タイプです。例えば、既に存在するキーを追加しようとすると、このエラーになります。

QuotaExceededError

割り当てられたディスク領域を使い切り、ユーザーが容量の追加を拒否したことを示します。

UnknownError

データベース自体とは関係ない理由により操作が失敗したことを示します。たとえば、ディスクの I/O エラーによる失敗が該当します。

VersionError

データベースの現在のバージョンより低いバージョンでデータベースを開こうとしたことを示します。

IDBRequest オブジェクトに送られるエラーコードに加え、非同期の操作も例外を発生させる可能性があります。この表は要求の実行中に起こりうる問題を説明していますが、要求を生成するときに他の問題が発生する可能性もあります。たとえば、要求がまだ完了していないときに結果にアクセスすると、InvalidStateError 例外が投げられます。

以下の例では、レコードのタイトルを指定して要求し、onsuccessIDBObjectStore から (objectStoreTitleRequest.result で参照できるようになった) 対応するレコードを取得し、レコードのプロパティ 1 個を更新し、更新したレコードをオブジェクトストアに書き戻します。また、最後には要求が失敗した場合に発生したエラーを報告する onerror 関数もあります。動く例全体は、To-do Notifications アプリケーションを参照してください。(動く例を見る)

js
const title = "Walk dog";

// 通常通りトランザクションを開始します
const objectStore = db
  .transaction(["toDoList"], "readwrite")
  .objectStore("toDoList");

// 指定したタイトルの TO-DO リストを取得します
const objectStoreTitleRequest = objectStore.get(title);

objectStoreTitleRequest.onsuccess = () => {
  // result として返されたデータオブジェクトを取得します
  const data = objectStoreTitleRequest.result;

  // オブジェクトの notified の値を "yes" に更新します
  data.notified = "yes";

  // アイテムをデータベースに書き戻すための新たな要求を生成します
  const updateTitleRequest = objectStore.put(data);

  // この新たな要求が成功したら、再び displayData() 関数を
  // 実行し、表示を更新します
  updateTitleRequest.onsuccess = () => {
    displayData();
  };
};

objectStoreTitleRequest.onerror = () => {
  // 要求でエラーが発生したら、発生したエラーを記録します
  console.log(
    `データの取得中にエラーが発生しました: ${objectStoreTitleRequest.error}`,
  );
};

仕様書

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

ブラウザーの互換性

BCD tables only load in the browser

関連情報