IDBRequest

Hinweis: Dieses Feature ist verfügbar in Web Workers.

Die IDBRequest-Schnittstelle der IndexedDB API bietet Zugang zu den Ergebnissen asynchroner Anfragen an Datenbanken und Datenbankobjekte mittels Ereignis-Handler-Attributen. Jede Lese- und Schreiboperation auf einer Datenbank wird über eine Anfrage durchgeführt.

Das Anfrageobjekt enthält anfänglich keine Informationen über das Ergebnis der Operation. Sobald Informationen verfügbar sind, wird ein Ereignis für die Anfrage ausgelöst, und die Informationen werden über die Eigenschaften der IDBRequest-Instanz zugänglich.

Alle asynchronen Operationen geben sofort eine IDBRequest-Instanz zurück. Jede Anfrage hat einen readyState, der auf den 'pending'-Zustand gesetzt ist; dieser ändert sich zu 'done', wenn die Anfrage abgeschlossen ist oder fehlschlägt. Wenn der Status auf done gesetzt wird, gibt jede Anfrage ein result und einen error zurück, und ein Ereignis wird bei der Anfrage ausgelöst. Wenn der Status noch pending ist, führt jeder Versuch, auf das result oder den error zuzugreifen, zu einer InvalidStateError-Ausnahme.

Einfach ausgedrückt, geben alle asynchronen Methoden ein Anfrageobjekt zurück. Wenn die Anfrage erfolgreich abgeschlossen wurde, wird das Ergebnis über die result-Eigenschaft verfügbar gemacht und ein Ereignis, das den Erfolg anzeigt, wird bei der Anfrage ausgelöst (success). Wenn beim Ausführen der Operation ein Fehler auftritt, wird die Ausnahme über die error-Eigenschaft verfügbar gemacht und ein Fehlerereignis wird ausgelöst (error).

Die Schnittstelle IDBOpenDBRequest leitet sich von IDBRequest ab.

EventTarget IDBRequest

Instanzeigenschaften

Erbt auch Eigenschaften von EventTarget.

IDBRequest.error Nur lesbar

Gibt eine DOMException im Falle einer fehlgeschlagenen Anfrage zurück, die anzeigt, was schiefgelaufen ist.

IDBRequest.result Nur lesbar

Gibt das Ergebnis der Anfrage zurück. Wenn die Anfrage nicht abgeschlossen ist, ist das Ergebnis nicht verfügbar und eine InvalidStateError-Ausnahme wird ausgelöst.

IDBRequest.source Nur lesbar

Die Quelle der Anfrage, wie ein IDBIndex oder ein IDBObjectStore. Falls keine Quelle existiert (zum Beispiel beim Aufruf von IDBFactory.open), wird null zurückgegeben.

IDBRequest.readyState Nur lesbar

Der Status der Anfrage. Jede Anfrage beginnt im pending-Status. Der Status ändert sich zu done, wenn die Anfrage erfolgreich abgeschlossen wird oder ein Fehler auftritt.

IDBRequest.transaction Nur lesbar

Die Transaktion der Anfrage. Diese Eigenschaft kann bei bestimmten Anfragen null sein, z.B. bei denen, die von IDBFactory.open zurückgegeben werden, es sei denn, ein Upgrade ist erforderlich. (Sie verbinden sich lediglich mit einer Datenbank, daher gibt es keine Transaktion zurückzugeben).

Instanzmethoden

Keine Methoden, aber erbt Methoden von EventTarget.

Ereignisse

Hören Sie diese Ereignisse mit addEventListener() ab oder weisen Sie dieser Schnittstelle einen Ereignis-Listener zu, indem Sie die Eigenschaft oneventname verwenden.

error

Wird ausgelöst, wenn ein Fehler eine Anfrage zum Scheitern bringt.

success

Wird ausgelöst, wenn eine IDBRequest erfolgreich ist.

Beispiel

Im folgenden Codeausschnitt öffnen wir eine Datenbank asynchron und stellen eine Anfrage; onerror und onsuccess Funktionen sind enthalten, um die Erfolgs- und Fehlerfälle zu behandeln. Für ein vollständiges funktionierendes Beispiel siehe unsere To-do Notifications App (Beispiel live ansehen.)

js
let db;

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

// these two event handlers act on the database being
// opened successfully, or not
DBOpenRequest.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Error loading database.";
};

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

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

Spezifikationen

Specification
Indexed Database API 3.0
# request-api

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch