For inserting data we have 2 possibilities: we have an add and a put method available. Both methods take the same parameters, but there is a slight difference between them. When we use the add method, we need to be sure that no other object with the same key is already added in the database. If it does, an constraint error (
CONSTRAINT_ERR
) will occur. So the add method will only be used when we want to add data that won’t be overwritten when it is already present with the same key in the database.The put method we will usually use when we want to update data. If the data isn’t present yet with the same key, the data will be inserted. If you want some more information about the steps for storing a record into an object store, you can find this here on the W3C specs site.
Make sure when you are starting a new transaction to manipulate data, you will use a read_write transaction. Otherwise you will receive an READ_ONLY_ERR when calling the methods.
The put and the add method are both available in the IObjectStore interface. This means once we have created the transaction where we will work in, we need to retrieve the object store we want to work on. We do this by calling the ObjectStore method on the transaction. The only thing we need to pass is the name of the object store.
var txn = dbconnection.transaction([“ObjectStoreName”]Once we have the object store object, we can start adding data to it. The result of the add operation is an IDBRequest object. This means the onsuccess will be called when the operation was successful and an onerror will be called when something went wrong.
, IDBTransaction.READ_WRITE);
var objectStore = txn.objectStore(“ObjectStoreName”);
When the onsuccess function gets called, the result of this action will be the key of the object in the object store
var addresult = objectStore.add(data);If we use a put for adding or changing data, we get the same structure only we will use the put method instead.
addresult.onsuccess = function (event) {
// Adding data is successful
// Commit the transaction when using IE9
var key;
// IE 9 implementation
if(event.result){
key = event.result
}
// IE 10, Chrome and Firefox implementation
else if (addresult.result){
key = addresult.result;
}
};
addresult.onerror = function (event) {
// Handle the error
}
var putresult = objectStore.put(data);Now that we have added some data to our database, we can start retrieving it and present it to our users…
putresult.onsuccess = function (event) {
// Putting data is successful
// Commit the transaction when using IE9
};
putresult.onerror = function (event) {
// Handle the error
}
Hi Kristof, thank you for your tutorials! They are very helpful and the most complete. When do you plan to post the next tutorial where you would start retrieveing data?
ReplyDeleteWell done! Thx ;)
ReplyDeleteThis comment has been removed by the author.
ReplyDeleteThanks for sharing.for more information : click here
ReplyDelete