Cet article nécessite une relecture technique. Voici comment vous pouvez aider.
Cet article nécessite une relecture rédactionnelle. Voici comment vous pouvez aider.
La méthode put()
de l'interface IDBObjectStore
fait une requête
pour ajouter ou mettre à jour un enregistrement du magasin d'objet relié
, un clone structuré de la valeur passé en paramètre et sa clé .
La réussite de la requête
dépend de la réussite de la transaction
. C'est à dire que l'événement success de la requête ne se déclenchera que si l'événement complete de la transaction se déclenche
La méthode put()
est une reqête
d'insertion et de mise à jour. Pour faire une insertion simple on utilise la méthode add()
qui échouera avec l'erreur ConstrainError
si un enregistrement existe déjà dans le magasin d'objet avec la même clé que celui qu'on veut ajouter.
Syntaxe
var request = objectStore.put(valeur, cleOption);
Paramètres
- valeur
- Les données qu'on veut emmagasiné.
- cleOption
- Une clé utilisé pour identifier l'objet (null si non spécifié).
Renvoie
Une requête
.
Exceptions
ReadOnlyError
- Cette
exception
est levé si la transaction associé à cette requête est enmode
lecture seule. TransactionInactiveError
- Cette
exception
est levé si latransaction
de l'accès
au magasin d’objet est inactive. DataError
- Cette
exception
est levé si:- On passe une clé en paramètre alors que le magasin d'objet utilise des clés internes.
- On ne passe pas de clé en paramètre alors que le magasin d'objet utilise des clés externes et n'as pas de générateur de clés.
- Le magasin d'objet utilise des clés internes sans générateur, et le nom de clé ne fournit pas une clé valide.
- On passe une clé invalide en paramètre.
InvalidStateError
- Cette
exception
est levé si le magasin d'objet a été supprimé. DataCloneError
- Cette
exception
est levé si les données que l'on veut emmagasiner ne peuvent pas être clonées (voir clone structuré, en)
Exemple
Dans l'exemple suivant on choisi un titre. On ouvre l'accès au magasin d'objet par une transaction en lecture/écriture. On récupère un enregistrement sur lequel on met à jour une propriété.
La méthode put()
sert à mètre à jour l'enregistrement dans le magasin d'objet. En cas de réussite, on exécute une fonction d'affichage.
var title = "Walk dog"; // Accès au magasin d'objet toDoList par une transaction en lecture/écriture. var objectStore = db.transaction(['toDoList'], "readwrite").objectStore('toDoList'); // récupère l'enregistrement suivant sont titre var objectStoreTitleRequest = objectStore.get(title); objectStoreTitleRequest.onsuccess = function() { // prend la valeur dans la propriété result de la requête var data = objectStoreTitleRequest.result; // on met à jour la valeur notified de l'objet data.notified = "yes"; // met à jour l'enregistrement var updateTitleRequest = objectStore.put(data); // Log the transaction that originated this request console.log("The transaction that originated this request is " + updateTitleRequest.transaction); // quand la mise à jour réussi on exécute la fonction displayData() updateTitleRequest.onsuccess = function() { displayData(); }; };
Pour un exemple de travail complet, voir notre To-do Notifications app (view example live).
Spécification
Spécification | Statut | Commentaire |
---|---|---|
Indexed Database API La définition de 'put()' dans cette spécification. |
Recommendation |
Compatibilité avec les navigateurs.
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Support basique | 23webkit 24 |
10 moz 16.0 (16.0) |
10, en partie | 15 | 7.1 |
Disponible dans workers | (Oui) | 37.0 (37.0) | ? | (Oui) | ? |
Fonctionnalité | Android | Firefox Mobile (Gecko) | Firefox OS | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support basique | 4.4 | 22.0 (22.0) | 1.0.1 | 10 | 22 | 8 |
Disponible dans workers | (Oui) | 37.0 (37.0) | (Oui) | ? | (Oui) | ? |