La propriété unique
, rattachée à l'interface IDBIndex
, est un booléen qui indique si l'index utilisé permet d'avoir des clés dupliquées.
Cette caractéristique est décidée lors de la création de l'index, avec la méthode IDBObjectStore.createIndex
. Cette méthode prend un paramètre optionnel, unique
, qui, s'il vaut true
, indique que l'index ne permettra pas d'avoir de clés dupliquées.
Syntaxe
var myIndex = objectStore.index('index');
Valeur
Un booléen qui vaut true
si l'index permet d'avoir des valeurs dupliquées pour une même clé ou false
s'il n'est pas possible d'avoir de clés dupliquées.
Exemples
Dans l'exemple suivant, on ouvre une transaction en lecture sur un magasin d'objets puis on récupère l'index lName
. On ouvre alors un curseur sur l'index grâce à IDBIndex.openCursor
(cela fonctionne de façon analogue à l'ouverture d'un curseur sur le magasin d'objets avec IDBObjectStore.openCursor
sauf qu'ici, les enregistrements sont triés selon l'index et pas selon la clé primaire.
On affiche le caractère unique des clé dans la console (ici, on voit que la propriété vaut false
).
Enfin, on parcourt chaque enregistrement et on insère les données dans le tableau HTML (pour voir un exemple complet, consulter notre dépôt IDBIndex-example (voir la démonstration live).
function displayDataByIndex() {
tableEntry.innerHTML = '';
var transaction = db.transaction(['contactsList'], 'readonly');
var objectStore = transaction.objectStore('contactsList');
var myIndex = objectStore.index('lName');
console.log(myIndex.unique);
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('Les éléments sont affichés.');
}
};
};
Spécifications
Spécification | État | Commentaires |
---|---|---|
Indexed Database API La définition de 'unique' dans cette spécification. |
Recommendation |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Support simple | 23webkit 24 |
(Oui) | 10 moz 16.0 (16.0) |
10, partial | 15 | 7.1 |
Disponible dans les web workers | (Oui) | (Oui) | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Webview Android | Edge | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile | Chrome pour Android |
---|---|---|---|---|---|---|---|---|
Support simple | 4.4 | (Oui) | (Oui) | 22.0 (22.0) | 10 | 22 | 8 | (Oui) |
Disponible dans les web workers | (Oui) | (Oui) | (Oui) | 37.0 (37.0) | ? | (Oui) | ? | (Oui) |
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).