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.
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 einIDBObjectStore
. Falls keine Quelle existiert (zum Beispiel beim Aufruf vonIDBFactory.open
), wird null zurückgegeben. IDBRequest.readyState
Nur lesbar-
Der Status der Anfrage. Jede Anfrage beginnt im
pending
-Status. Der Status ändert sich zudone
, 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.
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.)
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
- IndexedDB verwenden
- Transaktionen starten:
IDBDatabase
- Transaktionen verwenden:
IDBTransaction
- Eine Reihe von Schlüsseln festlegen:
IDBKeyRange
- Ihre Daten abrufen und ändern:
IDBObjectStore
- Cursor verwenden:
IDBCursor
- Referenzbeispiel: To-do Notifications (Beispiel live ansehen).