Cet article nécessite une relecture technique. Voici comment vous pouvez aider.
Cet article nécessite une relecture rédactionnelle. Voici comment vous pouvez aider.
La méthode openCursor()
de l'interface IDBIndex
fait une requête
récursive suivant un curseur avec valeur
qui itère l'index relié
sur l'intervalle de clé
spécifié.
La méthode la positionne le curseur de façon approprié, suivant la direction spécifié.
- Si aucun intervalle de clé n'est spécifié ou qu'il est null, tout les enregistrement serons alors inclues.
- L' événement success est toujours déclenché et:
- Si un enregistrement est trouvé la propriété
result
contient lecurseur avec valeur
courant. - Si aucun enregistrement n'est trouvé la propriété
result
de la requête vaudrasnull
.
- Si un enregistrement est trouvé la propriété
Syntaxe
var request = myIndex.openCursor(keyRange,direction);
Paramètres
- keyRange Facultatif
- L'
intervalle de clé
sur lequel se déplace le curseur. On peut passer un clé seule qui sera alors considéré comme uneintervalle seule
. Par défaut le curseur se déplace sur l'ensemble des clés de l'index. - direction Facultatif
- La
direction
ducurseur
qui défini le sens d'itération. par défaut "next".
Renvoie
Exceptions
TransactionInactiveError
- Cette
exception
est levé si latransaction
est inactive. DataError
- Cette
exception
est levé si la clé ou l'intervalle de clé
est invalide. InvalidStateError
- Cette
exception
est levé si l'index à été supprimé. TypeError
- Cette
exception
est levé si la valeur de la direction n'est pas valide.
Exemple
Dans l'exemple suivant on ouvre une transaction puis un magasin d'objet et enfin l'index lName
.
Finalement, On itère sur tous les enregistrements pour en insérer les données dans un tableau HTML. En utilisant la méthode IDBIndex.openCursor
qui travaille de la même façon que la méthode IDBObjectStore.openCursor
de l'accès
au magasin d'objet sauf que les enregistrements sont renvoyés dans l'ordre de l'index et non celui du magasin d'objet.
function displayDataByIndex() { tableEntry.innerHTML = ''; //ouvre un transaction var transaction = db.transaction(['contactsList'], 'readonly'); //accés au magasin d'objet var objectStore = transaction.objectStore('contactsList'); //on récupère l'index var myIndex = objectStore.index('lName'); //un curseur qui itère sur l'index var request = myIndex.openCursor(); request.onsuccess = function(event) { var cursor = request.result; if(cursor) { var tableRow = document.createElement('tr'); tableRow.innerHTML = '<td>' + cursor.value.id + '</td>' + '<td>' + cursor.value.lName + '</td>' + '<td>' + cursor.value.fName + '</td>' + '<td>' + cursor.value.jTitle + '</td>' + '<td>' + cursor.value.company + '</td>' + '<td>' + cursor.value.eMail + '</td>' + '<td>' + cursor.value.phone + '</td>' + '<td>' + cursor.value.age + '</td>'; tableEntry.appendChild(tableRow); cursor.continue(); } else { console.log('Tous les enregistrements ont été affichés.'); } }; };
Pour un exemple de travail complet, voir notre To-do Notifications app (view example live).
Spécification
Spécification | Statut | Commentaire |
---|---|---|
Indexed Database API La définition de 'openCursor()' dans cette spécification. |
Recommendation |
Compatibilité avec les navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support basique | 23webkit 24 |
10 moz 16.0 (16.0) |
10, en partie | 15 | 7.1 |
Disponible dans workers | (Oui) | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support basique | 4.4 | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 |
Disponible dans workers | (Oui) | 37.0 (37.0) | (Oui) | ? | (Oui) | ? |