IDBIndex
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.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
L'interface IDBIndex de l'API IndexedDB est un accès à un index d'un magasins d'objet. Un index permet de trier les enregistrements d'un magasin d'objet sur une autre clé que la clé primaire.
Un index contient des enregistrements persistent. Chaque enregistrement est composé d'une clé ( la valeur du chemin de clé) et d'une valeur (la clé primaire de l'enregistrement dans le magasin d'objet). Les enregistrements de l'index se mettent automatiquement à jour lorsque un enregistrement du magasin d'objet est ajouté , mise à jour ou supprimé. Chaque enregistrement de l'index ne peut référer qu'a un enregistrement du magasin d'objet. Un magasin d'objet peut avoir plusieurs index et lorsque le magasin d'objet change tout les index sont mis à jour automatiquement.
On peut retrouver les enregistrement sur une partie des clés, voir intervalle de clé.
Note : Cette fonctionnalité est disponible via les Web Workers.
Méthodes
Hérite de: EventTarget
IDBIndex.count()-
Fait un
requêtesur l'index. La requête compte le nombre d'enregistrements dans cet index ou sur l'intervalle de clépassé en paramètre. IDBIndex.get()-
Fait une
requêtepour renvoyer le premier enregistrement correspondant à la clé ou l'IDBKeyRangedu magasin d'objet suivant l'index. IDBIndex.getKey()-
Fait une
requêtepour renvoyer la clé primaire correspondant à la clé ou à l'intervalle de cléde l'index. Si une clé est trouvé le résultat de la requête contiendra seulement la clé primaire de l'enregistrement et non l'enregistrement comme le faitIDBIndex.get. IDBIndex.getAll()-
Fait une
requêtequi renvoie un tableau ordonné suivant les clés, des clones structurés des enregistrements de l'index relié. On peut limité le nombre d'enregistrements en les filtrants suivant leurs clés ou en paramétrant le compteur. IDBIndex.getAllKeys()-
Ferrais une
requêtequi renverrait la liste de toutes les clés des enregistrements de l'index. On pourrait limiter le nombre d'enregistrements en les filtrants suivant leurs clés ou en paramétrant le compteur. IDBIndex.openCursor()-
Fait une
requêterécursive suivant uncurseur avec valeurqui itère l'indexreliésur l'intervalle de cléspécifié. IDBIndex.openKeyCursor()-
Fait une
requêterécursive suivant uncurseurqui itère l'indexreliésur l'intervalle de cléspécifié.
Propriétés
IDBIndex.isAutoLocaleLecture seule Non standard-
Renvoie un
booléenindiquant si la valeur delocaleà été paramétré surautolors de la mise en place de l'index (voir les paramètres).IDBObjectStore.createIndex IDBIndex.localeLecture seule Non standard-
Renvoie la localisation de l'index (par exemple fr, ou
en-US)si la localisation à été spécifie lors de la mise en place de l'index(voir les paramètresIDBObjectStore.createIndex). IDBIndex.nameLecture seule-
Renvoie le nom de l'index.
IDBIndex.objectStoreLecture seule-
Renvoie un
accès au magasin d'objetque référence l'index. IDBIndex.keyPathLecture seule-
Renvoie le chemin de clé de l'index. Si l'index n'est pas automatiquement mise à jour la propriété vaux
null. IDBIndex.multiEntryLecture seule-
Renvoie un
booléenqui indique comment l'index gère le chemin de clé si c'est un tableau. IDBIndex.uniqueLecture seule-
Renvoie un
booléenqui indique l'index interdit la duplication d'enregistrement sur sa clé.
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.");
}
};
}
Note : Pour un exemple de travail complet, voir notre To-do Notifications app (view example live).
Spécifications
| Specification |
|---|
| Indexed Database API 3.0> # index-interface> |
Compatibilité des navigateurs
Chargement…