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

js
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 :

js
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

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
openCursor

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

Voir aussi