La méthode objectStore()
, rattachée à l'interface IDBTransaction
, renvoie l'accès à un des magasins d'objets liés à la transation sous la forme d'un objet IDBObjectStore
.
Si cette méthode est appelée plusieurs fois sur la même transaction et avec le même nom de magasin, elle reverra la même instance de IDBObjectStore
. Si cette méthode est appelée sur une autre transaction, elle renverra une instance différente.
Syntaxe
var objectStore = transaction.objectStore(nom);
Paramètres
nom
- Le nom du magasin d'objets auquel on veut accéder.
Valeur de retour
Un objet IDBObjectStore
qui permet d'accéder au magasin d'objets.
Exceptions
NotFoundError
- Cette exception
DOMException
est levée si le magasin d'objets demandé n'a pas été trouvé sur la transaction. InvalidStateError
- Cette exception
DOMException
est levée si la transaction est terminée ou si la demande a été faite sur un objet source qui a été supprimé ou retiré.
Exemple
Dans le code qui suit, on ouvre une connexion à la base de données. Sur cette connexion, on démarre une transaction (cf. IDBTransaction
) en lecture/écriture afin d'accéder au magasin d'objets "toDoList"
pour y ajouter un enregistrement (via la méthode IDBObjectStore.add
). On notera également l'utilisation des gestionnaires d'événement IDBTransaction.oncomplete
et IDBTransaction.onerror
de la transaction qui permettent d'afficher la résultat de la transaction sur la page.
La méthode objectStore()
permet d'accéder au magasin d'objets "toDoList"
.
// Connexion à la base de données var DBOpenRequest = window.indexedDB.open("toDoList", 4); DBOpenRequest.onsuccess = function(event) { note.innerHTML += '<li>Connexion établie.</li>'; // On affecte la connexion à la variable db. db = DBOpenRequest.result; // On exécute la fonction addData() pour // ajouter des données dans la base addData(); }; function addData() { // Un nouvel objet prêt à être emmagasiné newItem = [ { taskTitle: "Walk dog", hours: 19, minutes: 30, day: 24, month: "December", year: 2013, notified: "no" } ]; // On ouvre une transaction en lecture/écriture // pour le traitement des données sur la connexion var transaction = db.transaction(["toDoList"], "readwrite"); // On utilise oncomplete en cas de succès de // l'ouverture de la transaction transaction.oncomplete = function(event) { note.innerHTML += '<li>Transaction terminée : modification de la base de données OK.</li>'; }; // En cas d'échec de l'ouverture, on utilisera // le gestionnaire onerror transaction.onerror = function(event) { note.innerHTML += '<li>L\'erreur: "' + transaction.error +'" s\'est produite, échec de la transaction.</li>'; }; // On ouvre un magasin d'objets sur la transaction // grâce à la méthode objectStore var objectStore = transaction.objectStore("toDoList"); // Enfin, on ajoute un enregistrement var objectStoreRequest = objectStore.add(newItem[0]); objectStoreRequest.onsuccess = function(event) { // et on signale l'ajout de l'enregistrement note.innerHTML += '<li>Enregistrement ajouté.</li>'; }; };
Note : Pour un exemple fonctionnel complet, voir notre application To-do Notifications (l'exemple live est disponible ici).
Spécifications
Spécification | État | Commentaires |
---|---|---|
Indexed Database API La définition de 'objectStore()' dans cette spécification. |
Recommendation |
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support simple | 23webkit 24 |
10 moz 16.0 (16.0) |
10 | 15 | 7.1 |
Disponible via les web workers | (Oui) | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | 4.4 | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 |
Disponible via les web workers | (Oui) | 37.0 (37.0) | (Oui) | ? | (Oui) | ? |
Voir aussi
- Manipuler IndexedDB
- Démarrer des transactions :
IDBDatabase
- Manipuler des transactions :
IDBTransaction
- Définir un intervalle de clés :
IDBKeyRange
- Récupérer des données et les modifier :
IDBObjectStore
- Manipuler des curseurs :
IDBCursor
- Exemple de référence pour IndexedDB : To-do Notifications