IDBObjectStore.openCursor()
Baseline
Widely available
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
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
rangeFacultatif-
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. directionFacultatif-
Un objet
IDBCursorDirectionqui 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
| Specification |
|---|
| Indexed Database API 3.0> # ref-for-dom-idbobjectstore-opencursor②> |
Compatibilité des navigateurs
Chargement…
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).