IndexedDB封装

IndexedDB封装

封装(增,删除,查):

var inquiryDB = function (cb) {

    var obj = new Object();

    obj.name = "imChat";
    obj.version = 1;
    obj.db = null;
    obj.storeName = "inquiry";

    // 新增一条聊天记录
    obj.addMsg = function (msg) {
        var transaction = obj.db.transaction(obj.storeName, 'readwrite');
        var store = transaction.objectStore(obj.storeName);
        store.add(msg);
        // console.log(msg);
    }

    // 查询聊天记录  
    obj.queryMsg = function (targetId, doctorId, method) {
        var transaction = obj.db.transaction(obj.storeName);
        var store = transaction.objectStore(obj.storeName);
        var request = store.openCursor();
		// 定义数组
        var dataArr = new Array();
        //查询到结果
        request.onsuccess = function (e) {
            var cursor = e.target.result;

            //判断结果是否为空
            if (cursor) {
                var id = cursor.key;
                var obj = cursor.value;
                //比对查询的数据是否是传入参数一致

                if (obj.targetId == targetId & obj.doctorId == doctorId) {
                    // console.log(obj);
                    // 把每一个对象push数组中
                    dataArr.push(obj);
                    // console.log(dataArr);
                }
                //继续查询
                cursor.continue();
            } else {
                method(dataArr);
            }
        };
    }

    // 删除记录
    obj.deleteMsgByKey = function (targetId, doctorId) {
        var transaction = obj.db.transaction(obj.storeName, 'readwrite');
        var store = transaction.objectStore(obj.storeName);
        var request = store.openCursor();

        //查询到结果
        request.onsuccess = function (e) {
            var cursor = e.target.result;
            //判断结果是否为空
            if (cursor) {
                var id = cursor.key;
                // console.log(id);
                var obj = cursor.value;

                //比对查询的数据是否是传入参数一致
                if (obj.targetId == targetId & obj.doctorId == doctorId) {
                    //查询到指定数据, 执行回调
                    //method(obj);
                    store.delete(id);
                }
                //继续查询
                cursor.continue();
            }
        };
    }


    // 新增表
    obj.addTable = function (result) {
        if (!result.objectStoreNames.contains(obj.storeName)) {
            result.createObjectStore(obj.storeName, {
                autoIncrement: true
            });
        }
    }


    // 打开数据库
    obj.openDB = function (cb) {
        var version = obj.version || 1;
        var request = window.indexedDB.open(obj.name, version);
        request.onerror = function (e) {
            console.log(e.currentTarget.error.message);
        };
        request.onsuccess = function (e) {
            obj.db = e.target.result;
            cb && cb()
        };
        request.onupgradeneeded = function (e) {
            console.log("DB");
            obj.addTable(e.target.result);
        };
    }

    obj.openDB(cb);

    return obj;
};

// 删除数据库
function deleteDB(storeName) {
    window.indexedDB.deleteDatabase(storeName);
}
使用
var db = inquiryDB(indexDBWrap);
db.queryMsg (targetId, doctorId, function (e) {
	.......执行业务
})
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值