[js] indexeddb 使用demo
需要在服务器环境下运行才可正常存储。
在IOS手机上兼容性很差。
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <ul id='bg' style="background: lightblue;"></ul>
    </body>
    <script>
        var abradb = (function() {
            var myDB = {
                name: 'chat5',
                version: 1,
                db: null
            };
            var storeName = 'list';
            function openDB() {
                var version = myDB.version || 1;
                var request = window.indexedDB.open(myDB.name, version);
                request.onerror = function(e) {
                    console.log(e.currentTarget.error.message);
                };
                request.onsuccess = function(e) {
                    myDB.db = e.target.result;
                };
                request.onupgradeneeded = function(e) {
                    var db = e.target.result;
                    if (!db.objectStoreNames.contains(storeName)) {
                        db.createObjectStore(storeName, {
                            keyPath: 'chat_id'
                        });
                    }
//                        if (db.objectStoreNames.contains(storeName)) {
//                            db.deleteObjectStore(storeName);
//                        }
                    console.log('DB version changed to ' + version);
                };
            }
            function closeDB() {
                myDB.db.close();
            }
            function deleteDB() {
                indexedDB.deleteDatabase(myDB.name);
            }
            function addData(data) {
                var transaction = myDB.db.transaction(storeName, 'readwrite');
                var store = transaction.objectStore(storeName);
                store.add(data);
                console.log(store);
            }
            function getDataByKey(key) {
                var transaction = myDB.db.transaction(storeName, 'readwrite');
                var store = transaction.objectStore(storeName);
                var request = store.get(key);
                request.onsuccess = function(e) {
                    var rd = e.target.result;
                    console.log(rd);
                };
            }
            function updateDataByKey(key, data) {
                var transaction = myDB.db.transaction(storeName, 'readwrite');
                var store = transaction.objectStore(storeName);
                var request = store.get(key);
                request.onsuccess = function(e) {
                    var rd = e.target.result;
                    rd.chat_list.push(data);
                    store.put(rd);
                    console.log(updatedata.transaction);
                };
            }
            function deleteDataByKey(key) {
                var transaction = myDB.db.transaction(storeName, 'readwrite');
                var store = transaction.objectStore(storeName);
                store.delete(key);
            }
            function clearObjectStore() {
                var transaction = myDB.db.transaction(storeName, 'readwrite');
                var store = transaction.objectStore(storeName);
                store.clear();
            }
            function displayData() {
                var transaction = myDB.db.transaction(storeName, "readonly");
                var objectStore = transaction.objectStore(storeName);
                objectStore.openCursor().onsuccess = function(event) {
                    var cursor = event.target.result;
                    console.log(cursor);
                    //console.log(cursor.value);
                    var list = document.getElementById("bg");
                    if (cursor) {
                        var listItem = document.createElement('li');
                        listItem.innerHTML = cursor.value.chat_id;
                        list.appendChild(listItem);
                        cursor.continue();
                    } else {
                        console.log('Entries all displayed.');
                    }
                };
            };
            openDB();
            return {
                openDB: openDB,
                closeDB: closeDB,
                closeDB: closeDB,
                deleteDB: deleteDB,
                addData: addData,
                getData: getDataByKey,
                updateData: updateDataByKey,
                deleteData: deleteDataByKey,
                clearAllData: clearObjectStore,
                displayData: displayData
            }
        })();
        var chat = {
            from_id: 123,
            from_name: "abc",
            from_avatar: "",
            unread: "10",
            chat_id: 10222,
            chat_list: [{
                id: 1001,
                name: "Byron",
                age: 24
            }, {
                id: 1002,
                name: "Frank",
                age: 30
            }, {
                id: 1003,
                name: "Aaron",
                age: 26
            }]
        };
        var dd = [{
            id: 1001,
            name: "Byron",
            age: 24
        }, {
            id: 1002,
            name: "Frank",
            age: 30
        }, {
            id: 1003,
            name: "Aaron",
            age: 26
        }, {
            id: 1003,
            name: "Aaron",
            age: 26
        }];
        var cc = {
            id: 1003,
            name: "Aaron",
            age: 9999
        }
        setTimeout(function() {
            //abradb.updateData(1024, cc);
            abradb.addData(chat);
            //abradb.getData(16);
            //abradb.deleteData(1000);
            //abradb.clearAllData();
            abradb.displayData();
        }, 1000);
    </script>
</html>
                    
                
                
            
        
浙公网安备 33010602011771号