IDBObjectStore.index()
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 index()
, rattachée à l'interface IDBObjectStore
, permet d'ouvrir un index sur le magasin d'objet courant pour, par exemple, renvoyer une liste d'enregistrements triés par cet index grâce à un curseur.
Note : Cette fonctionnalité est disponible via les Web Workers.
Syntaxe
objectStore.index(nomIndex);
Paramètres
nomIndex
-
Le nom de l'index qu'on souhaite ouvrir.
Valeur de retour
Un objet IDBIndex
qui permet d'accéder à l'index.
Exceptions
Cette méthode peut déclencher une exception DOMException
ayant l'un des types suivants :
Exception | Description |
---|---|
InvalidStateError |
L'objet correspondant au magasin d'objet a été supprimé ou la transaction a été clôturée. |
NotFoundError |
Il n'existe pas d'index pour ce nom dans la base de données (la recherche est sensible à la casse). |
Exemples
Dans l'exemple qui suit, on ouvre une transaction sur un magasin d'objet et on accède à l'index lName
de la base de données. Ensuite, on ouvre un curseur sur l'index grâce à la méthode IDBIndex.openCursor
— cela fonctionne de la même façon que d'ouvrir un curseur à même le magasin d'objet grâce à IDBObjectStore.openCursor
sauf que, cette fois, les enregistrements sont renvoyés triés selon l'index et non selon la clé primaire.
Enfin, on parcourt chaque enregistrement pour l'ajouter dans un tableau HTML.
function displayDataByIndex() {
tableEntry.innerHTML = "";
var transaction = db.transaction(["contactsList"], "readonly");
var objectStore = transaction.objectStore("contactsList");
var myIndex = objectStore.index("lName");
myIndex.openCursor().onsuccess = function (event) {
var cursor = event.target.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("Éléments affichés.");
}
};
}
Note : Pour un exemple fonctionnel complet, voir notre exemple sur GitHub (la démonstration associée).
Spécifications
Specification |
---|
Indexed Database API 3.0 # dom-idbobjectstore-index |
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).