当前位置:Gxlcms > 数据库问题 > htm5本地存储方案——indexdb的封装

htm5本地存储方案——indexdb的封装

时间:2021-07-01 10:21:17 帮助过:74人阅读

封装IndexdDB*/ var localDatabase = { }; localDatabase.dbName = "yiliDB"; localDatabase.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB; localDatabase.db = null; localDatabase.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange; localDatabase.IDBCursor = window.IDBCursor || window.webkitIDBCursor; localDatabase.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction; localDatabase.indexedDB.onerror = function(e) { console.log("Database error: " + e.target.errorCode); }; //删除数据库 localDatabase.deleteIndexdDB = function() { var deleteDbRequest = localDatabase.indexedDB.deleteDatabase(localDatabase.dbName); deleteDbRequest.onsuccess = function(event) { console.log(‘Database deleted‘); localDatabase.db = null; }; deleteDbRequest.onerror = function(e) { console.log("Database error: " + e.target.errorCode); }; }; //打开数据库 localDatabase.openIndexdDB = function(callback) { console.log("init IndexdDB"); try { var openRequest = localDatabase.indexedDB.open(localDatabase.dbName); openRequest.onerror = function(e) { callback("Database error: " + e.target.errorCode); }; openRequest.onsuccess = function(event) { localDatabase.db = openRequest.result; console.log("Open IndexdDB success."); callback("success"); localDatabase.db.onversionchange = function() { console.log("DB close"); localDatabase.db.close(); }; }; openRequest.onupgradeneeded = function(evt) { console.log(‘Creating object stores‘); var MessageStore = evt.currentTarget.result.createObjectStore("message"); MessageStore.createIndex("userid", "userid", { unique: false }); }; } catch(e1) { console.log(e1); } };

再来个测试的例子

//添加消息
localDatabase.addMessageToIndexDB = function(obj, userid) {
    try {
        console.log(localDatabase.db);
        if(localDatabase != null && localDatabase.db != null) {
            var transaction = localDatabase.db.transaction("message", "readwrite");
            var store = transaction.objectStore("message");
            var request = store.get(userid);
            request.onsuccess = function(e) {
                var result = e.target.result;
                var exist = 0;
                if(typeof result != ‘undefined‘) {
                    for(var i = 0; i < result.length; i++) {
                        if(result[i].userid == obj.userid) {
                            result[i] = obj;
                            exist++;
                            break;
                        }
                    }
                    if(!exist) {
                        result.push(obj);
                    }
                    store.put(result, userid);
                } else {
                    store.add([obj], userid);
                }
            };
        }
    } catch(e) {
        console.log(e)
    }
};
//获取消息
localDatabase.getMessage = function(userid, callback) {
    try {

        if(localDatabase != null && localDatabase.db != null) {

            var store = localDatabase.db.transaction("message").objectStore("message");
            //            var index = store.index("userid");
            //            var request = index.openCursor(IDBKeyRange.only(userid));
            request = store.get(userid);
            request.onsuccess = function(res) {
                var result = res.target.result;
                if(typeof result != ‘undefined‘) {
                    callback(result);
                } else {
                    callback(null);
                }

            };

        }
    } catch(e) {

        console.log(e);

    }

};

 

htm5本地存储方案——indexdb的封装

标签:class   open   read   undefined   tran   err   als   res   name   

人气教程排行