La méthode createObjectStore()
, rattachée à l'interface IDBDatabase
, permet d'ajouter un magasin d’objet ou un index à la base de donnée et renvoie un accès vers celui-ci.
Cette méthode utilise deux paramètres : le nom du magasin d'objets et un objet qui permettra de définir des propriétés optionnelles supplémentaires.
Cette méthode ne peut être appelée que lors d'une transaction en mode versionchange
.
Note : Cette fonctionnalité est disponible via les Web Workers.
Syntaxe
var objectStore = db.createObjectStore(name, optionalParameters);
Paramètres
name
- Le nom du magasin d'objet à ajouter. Il est possible d'ajouter un magasin d’objet dont le nom est la chaîne vide (!).
optionalParameters
Facultatif-
Un objet qui permet de décrire plus finement le magasin d'objets avec ces propriétés :
Propriété Description keyPath
Le chemin de la clé utilisé par le magasin d'objet. Si ce paramètre est vide ou non spécifié, le magasin d'objets utilisera une clé externe. Le keyPath
peut aussi être un tableau.autoIncrement
Si true
, le magasin d’objet implémentera un générateur de clé. La valeur par défaut estfalse
.Les autres propriétés seront ignorés.
Valeur de retour
IDBObjectStore
- Le magasin d'objets qui vient d'être créé.
Exceptions
InvalidStateError
- Cette exception
DOMException
est levée si la méthode n'est pas appelée lors d'une transaction en modeversionchange
. Pour les anciens navigateurs basés sur WebKit, il faut d'abord appelerIDBVersionChangeRequest.setVersion
. TransactionInactiveError
- Cette exception
DOMException
est levée si la méthode est appelée sur une base de données qui n'existe pas (elle a par exemple été effacée). Dans les versions antérieures à Firefox 41, ce dernier levait une erreurInvalidStateError
, cela est désormais corrigé (cf. bug 1176165). ConstraintError
- Un magasin d'objet portant le même nom (la casse est importante) existe déjà dans cette base de donnée.
InvalidAccessError
- Si la valeur
autoIncrement
est àtrue
et que le chemin de clé n'est pas renseigné ou est un tableau vide.
Exemple
// Ouverture de la base de données var request = window.indexedDB.open("toDoList", 4); /* Gestionnaire d'événement qui intervient lors de la mise en place d'une nouvelle version de la base de données, que la base n'existe pas et soit ajoutée ou qu'un nouveau numéro de version soit passé à window.indexedDB.open Il est seulement mis en œuvre dans les navigateurs récents */ request.onupgradeneeded = function(event) { var db = event.target.result; db.onerror = function(event) { note.innerHTML += '<li>Erreur du chargement de la base de données.</li>'; }; // On ajoute un magasin d'objet à la base de données var objectStore = db.createObjectStore("toDoList", { keyPath: "taskTitle" }); // définition des index de ce magasin d'objets objectStore.createIndex("hours", "hours", { unique: false }); objectStore.createIndex("minutes", "minutes", { unique: false }); objectStore.createIndex("day", "day", { unique: false }); objectStore.createIndex("month", "month", { unique: false }); objectStore.createIndex("year", "year", { unique: false }); objectStore.createIndex("notified", "notified", { unique: false }); note.innerHTML += '<li>Magasin d\'objet ajouté.</li>'; };
Spécifications
Spécification | État | Commentaires |
---|---|---|
Indexed Database API La définition de 'createObjectStore()' 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, en partie | 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
Étiquettes et contributeurs liés au document
Étiquettes :
Contributeurs à cette page :
SphinxKnight,
gadgino
Dernière mise à jour par :
SphinxKnight,