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.
IDBTransaction
インターフェイスの IDBTransaction.error
プロパティは、トランザクションが失敗したときにエラーの種類を返します。
メモ: この機能はウェブワーカー内で利用可能です。
値
関連するエラーが入った DOMException
を返すか、エラーが無いときは null
を返します。
エラーを発生させた要求オブジェクトと同じエラーの参照であることも、トランザクションの失敗 (QuotaExceededError
など) であることもあります。
トランザクションが完了していないか、正常にコミットして完了した場合は、このプロパティは null
です。
例
以下のコード断片では、データベースの読み書きトランザクションを開き、オブジェクトストアにデータを追加します。トランザクションのイベントハンドラーに設定した関数により、成功時または失敗時にトランザクションを開いた結果を報告する点にも注目してください。transaction.onerror = (event) => { };
ブロックに注目してください。これは、トランザクションの失敗時何がいけなかったのかを報告する助けとして transaction.error
を用いています。動く例全体は、To-do Notifications アプリケーションを参照してください。(動く例を見る)
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① |
ブラウザーの互換性
BCD tables only load in the browser
関連情報
- IndexedDB の使用
- トランザクションの開始:
IDBDatabase
- トランザクションの使用:
IDBTransaction
- キー範囲の設定:
IDBKeyRange
- データの取得と変更:
IDBObjectStore
- カーソルの使用:
IDBCursor
- リファレンス例: To-do Notifications (動く例を見る)