IDBRequest.error
IDBRequest
インターフェイスの読み取り専用プロパティ error
は、要求が失敗したときエラーを返します。
メモ: この機能はウェブワーカー内で利用可能です。
値
DOMException
、もしくはエラーがないときは null
です。例外オブジェクトでは、以下のエラー名が返されます。
AbortError
-
トランザクションをアボートすると、進行中の全ての要求がこのエラーとなります。
ConstraintError
-
制約を満たさないデータを追加しようとしたことを示します。これはデータストアやインデックスの作成用の例外タイプです。例えば、既に存在するキーを追加しようとすると、このエラーになります。
QuotaExceededError
-
割り当てられたディスク領域を使い切り、ユーザーが容量の追加を拒否したことを示します。
UnknownError
-
データベース自体とは関係ない理由により操作が失敗したことを示します。たとえば、ディスクの I/O エラーによる失敗が該当します。
VersionError
-
データベースの現在のバージョンより低いバージョンでデータベースを開こうとしたことを示します。
IDBRequest
オブジェクトに送られるエラーコードに加え、非同期の操作も例外を発生させる可能性があります。この表は要求の実行中に起こりうる問題を説明していますが、要求を生成するときに他の問題が発生する可能性もあります。たとえば、要求がまだ完了していないときに結果にアクセスすると、InvalidStateError
例外が投げられます。
例
以下の例では、レコードのタイトルを指定して要求し、onsuccess
で IDBObjectStore
から (objectStoreTitleRequest.result
で参照できるようになった) 対応するレコードを取得し、レコードのプロパティ 1 個を更新し、更新したレコードをオブジェクトストアに書き戻します。また、最後には要求が失敗した場合に発生したエラーを報告する onerror
関数もあります。動く例全体は、To-do Notifications アプリケーションを参照してください。(動く例を見る)
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
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キーの範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)