DOM

インターフェイス

IDBRequest インターフェイス

  編集:2022.04.06 by T.A.

MS

IndexedDB API の IDBRequest インターフェイスは、イベントハンドラー属性を使用して、データベースおよびデータベースオブジェクトへの非同期要求の結果へのアクセスを提供します。データベースに対する各読み取りおよび書き込み操作は、要求を使用して実行されます。

リクエスト オブジェクトには、最初は操作の結果に関する情報は含まれていませんが、情報が利用可能になると、リクエストに応じてイベントが発生し、IDBRequest インスタンスのプロパティを通じて情報を利用できるようになります。

すべての非同期操作は、すぐに IDBRequest インスタンスを返します。各リクエストには、「pending(保留中)」の状態に設定された readyState があります。リクエストが完了するか失敗すると、これは「done(完了)」に変わります。状態が done に設定されている場合、すべてのリクエストは結果とエラーを返しますが、リクエストに応じてイベントが発生します。状態がまだ保留中の場合、結果またはエラーにアクセスしようとすると、InvalidStateError 例外が発生します。

簡単に言うと、すべての非同期メソッドはリクエスト オブジェクトを返します。リクエストが正常に完了した場合は、結果は result プロパティを介して利用可能になり、成功を示すイベントがリクエスト(IDBRequest.onsuccess)で発生します。操作中にエラーが発生した場合は、例外は result プロパティを通じて利用可能になり、エラーイベントが発生します(IDBRequest.onerror(en-US))。

インターフェイス IDBOpenDBRequestは、IDBRequest から派生しています。

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

プロパティ

また、EventTarget からプロパティを継承します。

IDBRequest.error 読取専用
リクエストが失敗した場合に DOMException を返します。何が悪かったかを示します。
IDBRequest.result 読取専用
リクエストの結果を返します。リクエストが失敗し、結果が利用できない場合は、InvalidStateError 例外がスローされます。
IDBRequest.source 読取専用
リクエストのソース、IDBIndexIDBObjectStore など。ソースが存在しない場合(IDBFactory.open を呼び出す場合など)、null を返します。
IDBRequest.readyState 読取専用
リクエストの状態。すべてのリクエストは保留状態で開始されます。リクエストが正常に完了するか、エラーが発生すると、状態は完了に変わります。
IDBRequest.transaction 読取専用
リクエストのトランザクション。このプロパティは、特定のリクエストでは null になる可能性があります。たとえば、アップグレードが必要でない限り、IDBFactory.open から返されたもの。(データベースに接続しているだけなので、返すトランザクションはありません)。
メソッド

メソッドはありませんが、EventTarget からメソッドを継承します。

イベント

addEventListener() を使用するか、このインターフェイスの oneventname プロパティにイベントリスナーを割り当てることにより、これらのイベントをリッスンします。

error
エラーが原因でリクエストが失敗した場合に発生します。onerror(en-US)プロパティからも利用できます。
success
IDBRequest が成功したときに発生します。onsuccess プロパティからも利用できます。
次のコードスニペットでは、データベースを非同期で開き、リクエストを行います。成功とエラーのケースを処理するために、onerror 関数と onsuccess 関数が含まれています。完全に機能する例については、To-Do通知アプリ を参照してください(例をライブで表示)。
var db;

// Let us open our database
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

// these two event handlers act on the database being
// opened successfully, or not
DBOpenRequest.onerror = function(event) {
  note.innerHTML += '<li>Error loading database.</li>';
};

DBOpenRequest.onsuccess = function(event) {
  note.innerHTML += '<li>Database initialised.</li>';

  // store the result of opening the database.
  db = DBOpenRequest.result;
};

テスト
HTML:

ここに表示
スクリプト組み込み:



スクリプト:


スクリプト:



表示内容:
表示内容: