IDBObjectStore.openCursor()
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.
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
Specification |
---|
Indexed Database API 3.0 # ref-for-dom-idbobjectstore-opencursor② |
Compatibilité des navigateurs
BCD tables only load in the browser
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).