IDBObjectStore.add()

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 add() de l'interface IDBObjectStore fait une requête pour ajouter un enregistrement au 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 add() n'est qu'une reqête d'insertion. Si un enregistrement existe déjà dans le magasin d'objet avec la même clé que celui qu'on veut ajouter , la requête échoue avec l'erreur ConstrainError. Pour mettre à jour un enregistrement, on doit utilisé la méthode put() .

Note : This feature is available in Web Workers.

Syntaxe

var requete = objectStore.add(valeur, cleOption);

Paramètres

valeur
Les données qu'on veut emmagasiné.
cleOption
Une clé utilisé pour identifier l'enregistrement (généré ou null si non spécifié).

Renvoie

Une requête.

Exceptions

ReadOnlyError
Cette exception est levé si la transaction associé à cette requête est en mode lecture seule.
TransactionInactiveError
Cette exception est levé si la transaction 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'objets utilise des clés internes.
  • On ne passe pas de clé en paramètre alors que le magasin d'objets 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 le code suivant, on ouvre une connexion à la base de donnée. Sur cette connexion on démarre une transaction en lecture/écriture pour avoir un accès au magasin d'objet "toDoList" sur lequel on ajoute un enregistrement.

La méthode add() de l'accès au magasin d'objets fait une requête pour ajouter le premier élément du tableau newItem et sa clé dans le magasin d'objet toDoList. La clé ici doit être fournie par un générateur de clé, c'est à dire que le magasin d'objets toDoList s’incrémente automatiquement.

//Connexion à la base de données
var DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = function(event) {
	note.innerHTML += '<li>Connexion établie.</li>'; 
  
	//Affecte la connexion à la variable db. 
	db = DBOpenRequest.result; 

	// Exécutez la fonction addData () pour ajouter un enregistrement au magasin d'objet
	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" } ]; 
	
	// ouvre une transaction de lecture / écriture  prête au traitement des données sur la connexion
	var transaction = db.transaction(["toDoList"], "readwrite"); 
	
	// en cas de succès de l'ouverture de la transaction 
	transaction.oncomplete = function(event) { 
		note.innerHTML += '<li>Transaction complété : modification de la base de données terminée.</li>'; 
	}; 
	// en  cas d'échec de l'ouverture de la transaction 
	transaction.onerror = function(event) { 
		note.innerHTML += '<li>L\'erreur: "' + transaction.error +'" c\'est produite échec de la transaction.</li>';  
	}; 
	
	// ouvre l'accès au un magasin "toDoList" de la transaction
	var objectStore = transaction.objectStore("toDoList"); 
	
//-> Ajoute un enregistrement
	var objectStoreRequest = objectStore.add(newItem[0]); 
	objectStoreRequest.onsuccess = function(event) { 
		// signale l'ajout de l'enregistrement
		note.innerHTML += '<li>Enregistrement ajouté.</li>'; 
	};
 };
 

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 'add()' 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) ?

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : gadgino
 Dernière mise à jour par : gadgino,