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

BCD tables only load in the browser

Voir aussi