--- title: IDBRequest slug: Web/API/IDBRequest tags: - API - Database - IDBRequest - IndexedDB - Interface - Reference - Storage - TopicStub translation_of: Web/API/IDBRequest ---
{{APIRef("IndexedDB")}}
L'interface IDBRequest
de l'API IndexedDB donne accès par ses gestionnaires d'événements aux résultats des requêtes asynchrones sur la base de données, les magasins d'objets ou les index. Chaque opération d'écriture ou lecture sur la base de données utilise une requête.
Cet objet IDBRequest
ne contient aucune information sur le résultat de l'opération, mais dès qu'une information est disponible un événement est déclenché. L'objet IDBRequest
utilise ses gestionnaires d'événements pour le capter et mettre l'information à disposition.
Toute les opération asynchrone retourne immédiatement une instance IDBRequest
avec une propriété readyState
défini à 'pending'
qui passe à 'done'
lorsque la requête réussie ou échoue. Quand l'état passe à done
, chaque requête retourne result
et error
, et un évènement est envoyé sur la requête. Quand l'état est sur pending
, chaque accès à result
ou error
lève une exception InvalidStateError
.
Pour faire simple, chaque méthode asynchrome retourne un objet de requête. Si l'opération réussi, le résultat est disponible dans la propriété result
et un évènement success
est lancé ({{domxref("IDBRequest.onsuccess")}}). Si une erreur est rencontrée, une exeption est disponible dans la propriété error
et un évènement error
est lancé ({{domxref("IDBRequest.onerror")}}).
L'interface {{domxref("IDBOpenDBRequest")}} est dérivé de IDBRequest
.
{{AvailableInWorkers}}
{{InheritanceDiagram}}
Hérite des propriétés de {{domxref("EventTarget")}}.
result
de l'interface IDBRequest
renvoie le résultat de la requête. Si la requête est en cours, échoue ou que le résultat n'est pas disponible, l'exception InvalidStateError
est levée.error
de l'interface IDBRequest
indique le code de l'erreur survenue durant le traitement de la requête. Si la requête est en cours l'exception InvalidStateError
est levée.source
de l'interface IDBRequest
renvoie la source de la requête, tel qu'un {{domxref("IDBIndex","index")}}, un {{domxref("IDBObjectStore","magasin d'ojets")}} ou null
s'il n'y a pas de source (lors de l'appel {{domxref("indexedDB.open")}} par exemple).transaction
de l'interface IDBRequest
renvoie la {{domxref("IDBTransaction","transaction")}} dans laquelle on fait la requête. La propriété peut renvoyer null
si requête se fait sans transaction, comme un objet IDBRequest renvoyé par {{domxref("IDBFactory.open")}} dans ce cas on est juste connecté à la base de données.readyState
de l'interface IDBRequest
renvoie l'état de la requête. Chaque requête débute avec un statut pending
et passe au statut done
quand la requête réussie ou échoue.Pas de méthodes spécifiques, mais hérite des méthodes de {{domxref("EventTarget")}}.
On peut écouter les évènement avec addEventListener()
ou bien en assignant un gestionnaire d'évènement à la propriété oneventname
de cette interface.
onerror
de l'interface IDBRequest
capte l'événement error
, déclenché quand une requête renvoie une erreur.onsuccess
de l'interface IDBRequest
capte l'événement success
, déclenché quand la requête réussie.Dans l'exemple suivant, on ouvre une base de données et on fait une requête. Les gestionnaires d'événement {{domxref("IDBRequest.onsuccess","onsuccess")}}
et {{domxref("IDBRequest","onerror")}}
sont inclus. Pour un exemple de travail complet, voir notre application To-do Notifications (voir l'exemple en direct).
var db; // Ouvre une base de données. var DBOpenRequest = window.indexedDB.open("toDoList", 4); // Ces deux gestionnaires d'événement interviennent quand la dase de // de données s'ouvre ou non. DBOpenRequest.onerror = function(event) { note.innerHTML += '<li>Error loading database.</li>'; }; DBOpenRequest.onsuccess = function(event) { note.innerHTML += '<li>Database initialised.</li>'; // Affecte le resutat de l'ouverture à la variable. db = DBOpenRequest.result; };
Spécification | Statut | Commentaire |
---|---|---|
{{SpecName('IndexedDB', '#idbrequest', 'IDBRequest')}} | {{Spec2('IndexedDB')}} | Définition initiale. |
{{SpecName("IndexedDB 2", "#request-api", "IDBRequest")}} | {{Spec2("IndexedDB 2")}} |
{{Compat("api.IDBRequest")}}