La méthode openCursor()
, rattachée à l'interface IDBObjectStore
, renvoie un objet IDBRequest
et, dans un thread séparé, renvoie un nouvel objet IDBCursorWithValue
qu'on peut utiliser pour parcourir un magasin d'objets avec un curseur.
Afin de déterminer si l'opération s'est déroulée correctement, on pourra surveiller l'évènement success
.
Note : Cette fonctionnalité est disponible via les Web Workers.
Syntaxe
var requete = ObjectStore.openCursor(optionalKeyRange, optionalDirection);
Paramètres
range
Facultatif- Une clé ou un intervalle de clés (
IDBKeyRange
) qu'on souhaite parcourir. Si une seule clé est passée en argument, l'intervalle utilisé pour le curseur sera restreint à cette seule clé. Si aucune valeur n'est passée pour cet argument, l'intervalle utilisé pour le curseur englobera tous les enregistrements du magasin d'objets. direction
Facultatif- Un objet
IDBCursorDirection
qui indique la direction de parcours du curseur. La valeur par défaut est"next"
.
Valeur de retour
Un objet IDBRequest
sur lequel seront déclenchés les évènements relatifs à l'opération.
Exceptions
Cette méthode peut déclencher une exception DOMException
ayant l'un des types suivants :
Exception | Description |
---|---|
InvalidStateError |
L'objet IDBObjectStore ou l'objet IDBIndex a été supprimé. |
TransactionInactiveError |
La transaction rattachée au magasin d'objets (IDBObjectStore ) est inactive. |
DataError |
La clé ou l'intervalle de clés indiqué est invalide. |
Exemples
Dans ce fragment de code, on crée une transaction, on ouvre le magasin d'objets souhaité puis on place un curseur pour parcourir tous les enregistrements du magasin d'objets :
var transaction = db.transaction("name", "readonly");
var objectStore = transaction.objectStore("name");
var request = objectStore.openCursor();
request.onsuccess = function(event) {
var cursor = event.target.result;
if(cursor) {
// cursor.value contient l'enregistrement courant
// pendant le parcours, on peut éventuellement le manipuler ici
cursor.continue();
} else {
// il n'y a plus de résultats
}
};
Spécifications
Spécification | État | Commentaires |
---|---|---|
Indexed Database API La définition de 'openCursor' dans cette spécification. |
Recommendation |
Compatibilité des navigateurs
Nous convertissons les données de compatibilité dans un format JSON.
Ce tableau de compatibilité utilise encore l'ancien format
car nous n'avons pas encore converti les données qu'il contient.
Vous pouvez nous aider en contribuant !
Fonctionnalité | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Support simple | 23webkit 24 |
(Oui) | 10 moz 16.0 (16.0) |
10, partial | 15 | 7.1 |
Disponible dans les web workers | (Oui) | ? | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Webview Android | Edge | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile | Chrome pour Android |
---|---|---|---|---|---|---|---|---|---|
Support simple | 4.4 | (Oui) | (Oui) | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 | (Oui) |
Disponible dans les web workers | Pas de support | (Oui) | ? | 37.0 (37.0) | (Oui) | ? | (Oui) | ? | (Oui) |
Voir aussi
- Utiliser IndexedDB
- Initier une connexion :
IDBDatabase
- Utiliser les transactions :
IDBTransaction
- Définir un intervalle de clés :
IDBKeyRange
- Récupérer et modifier les données :
IDBObjectStore
- Utiliser les curseurs
IDBCursor
- Exemple de référence : To-do Notifications (exemple live).