IDBTransaction.objectStore()

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 renverra la même instance de  IDBObjectStore. Si cette méthode est appelée sur une autre transaction, elle renverra une instance différente.

Note : Cette fonctionnalité est disponible via les Web Workers.

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

Étiquettes et contributeurs liés au document

Étiquettes : 
 Contributeurs à cette page : Faontetard, SphinxKnight, gadgino
 Dernière mise à jour par : Faontetard,