跳到主要內容

IndexedDB Database API - Add Object

The post refer to add object items to the target indexedDB after indexedDB initialization. The add() method of the IDBObjectStore interface is an only insert method. We could use the transaction object to which this object store belongs and add items to.

How to start it?

//***************************************************************
//addData
//{Object}, {db: dbName, objectStore: storeName, version: number, data: data}, the database info include db name, store name , version and object data need to be added.
//**********************************************************************
function addData (data) {
    var targetDB = {}; 
    var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
    var nameStore = data.hasOwnProperty("objectStore") ? data.objectStore : "list";
    var nameDB = data.hasOwnProperty("db") ? data.db : data;
    var dbVersion = data.hasOwnProperty("version") ? data.version : "2";
    var dataAy = data.hasOwnProperty("data") ? data.data : "";

    if (dataAy === "") {
        console.log("No data need to be added.");
        return;
    }

    if ('webkitIndexedDB' in window) {
        window.IDBTransaction = window.webkitIDBTransaction;
        window.IDBKeyRange = window.webkitIDBKeyRange;
    }
    targetDB.indexedDB = {};
    targetDB.indexedDB.open = function() {
        var request = indexedDB.open(nameDB, dbVersion);
        request.onsuccess = function(e) {
            console.log ("success our DB: " + nameDB + "/" + nameStore + " is open and ready for work");
            targetDB.indexedDB.db = request.result;
            var transaction = targetDB.indexedDB.db.transaction(["list"], "readwrite");
            var objectStore = transaction.objectStore(nameStore);
            transaction.oncomplete = function () {console.log("The transaction has finished.")};
            transaction.onerror = function () {console.log("The transaction is fail.")};
            dataAy.forEach(function (elem, index, ay) {            
                var rs = objectStore.add(elem);
                rs.onsuccess = function(event) {
                    console.log(elem + " was added.");
                }
            });
            
        }
        request.onerror = function(e) {
        }
        
    }
    targetDB.indexedDB.open();
}
addData({db:"test", data:[{item_no: 1, item_desc: "1_desc"},{item_no: 2, item_desc: "2_desc"}]});

Reference Link


留言

這個網誌中的熱門文章

Indexed Database API - Initail

As a front web developer, I could create UI faster or Optimize file to load page faster. But it hard to faster response time form server however 80-90% of the end-user response time is spent on the frontend. Nowadays we could use the Indexed Database API, or IndexedDB to reduce the request times. Less request times, less response time. What is IndexedDB ? IndexedDB is web browser standard interface for a local database of records holding simple values and hierarchical objects. IndexedDB was initially proposed by Oracle in 2009./* wiki */ What browsers would support IndexedDB ? Most browsers of hybrid devices support it exclude IE9-, Safari 7-,iOS Safari 7.1-, Opera Mini, Android Browser 4.3-./* caniuse.com */ When shall we use IndexedDB ? Save Money on web hosting Data index sort Data keyword search Keep data for period of time How to start it? //*************************************************************** //initDB //{Object}, {data: dbName, objectStore: storeName, ...

最近設計的一組icon..太有APPLE風格被打槍了

jQuery 的slideToggle太好用了

$ ( ".collapse" ) .each ( function ( index, value ) { $ ( this ) . click ( function ( evt ) { evt.preventDefault ( ) ; //prevent the default click event of the anchor tag. var target = $ ( this ) .attr ( "data-toggle" ) ; $ ( "." + target ) .slideToggle ( ) ; } ) ; } ) ; http://code-tricks.com/create-a-common-toggler-for-div-using-jquery/