H5笔记-本地存储indexedDB

来源:互联网 发布:2017公安部网络严打 编辑:程序博客网 时间:2024/06/05 06:19

封装ZsfyIndexedDB

var ZsfyIndexedDB = function(){};ZsfyIndexedDB.indexedDB_name = "db_zsfy";ZsfyIndexedDB.indexedDB_version = 2.0;ZsfyIndexedDB.db_zsfy;//zsfy前端数据库,供各个模块前端缓存使用ZsfyIndexedDB.doConnection = function(onSuccessCallback){    window.indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB;    if (window.indexedDB) {        //打开数据库,没有则创建        var openRequest = window.indexedDB.open(ZsfyIndexedDB.indexedDB_name, ZsfyIndexedDB.indexedDB_version);        //DB数据库新建或者版本变更时回调,可以看成系统全新或升级脚本执行的入口        openRequest.onupgradeneeded = function(e) {            var db = e.target.result;            if(!db.objectStoreNames.contains('LayyList')){                console.log("创建【网上立案】缓存");                db.createObjectStore('LayyList',{autoIncrement: false});            }            console.log("创建前端缓存结束");        }         //DB成功打开时回调,由于打开IndexedDB是异步的,要确保数据库打开了再做其他操作        openRequest.onsuccess = function(e) {            console.log("访问前端数据库db_zsfy成功!");            ZsfyIndexedDB.db_zsfy = e.target.result;            if(onSuccessCallback){                onSuccessCallback();            }        }        //打开数据库失败时调用        openRequest.onerror = function(e){            console.log("访问前端数据库db_zsfy失败!");        }     }};

封装业务模块的操作LayyIndexedDB

//*************** 读写网上立案缓存(前台各种保存、暂存、提交) *****************/** * 新增或更新一条记录 * @param {} layyInfo object实体 * @param {} layyId 缓存里对应的数据主键 */function saveOrUpdateLayyObject(layyInfo,layyId){    var transaction = ZsfyIndexedDB.db_zsfy.transaction("LayyList",'readwrite');     var layystore = transaction.objectStore("LayyList");     layystore.put(layyInfo,layyId);}/** * 移除一条记录 * 客户端的缓存直到数据提交,提交后的立案信息,以外网数据库为准,就不再缓存了 * @param {} layyId */function deleteLayyObject(layyId){    var transaction = ZsfyIndexedDB.db_zsfy.transaction("LayyList",'readwrite');     var layystore = transaction.objectStore("LayyList");     layystore.delete(layyId);}/** * 异步查询一条记录 * 目前各大浏览器还不支持同步,兼容性也不太好 * @param {} layyId 立案预约ID * @param {} getCallback 获取结果后的回调函数,不可为空! */function getLayyObjectAsync(layyId,getCallback){    var transaction = ZsfyIndexedDB.db_zsfy.transaction("LayyList",'readwrite');     var layystore = transaction.objectStore("LayyList");     layystore.get(layyId).onsuccess = getCallback;}

客户端调用示例

    ZsfyIndexedDB.doConnection(function(){        getLayyObjectAsync(layyId,function(e){            var layyInfo = e.target.result;            var dsrObjArray = layyInfo.dsrList;        });    }); 

总结

(1)indexDB对数据存储有大小的限制。通常每个域名的最大存数上限是250MB;
(2)数据是永久保存,除非手动删除或者手动清理浏览器数据;
(3)indexDB的操作是基于异步处理的。使用时注意顺序控制;

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 孩子个性太强脾气太倔不听话怎么办 孩子有十七了太不听话了怎么办 小孩的学籍填错了怎么办还能改吗 生完孩子后脾气暴躁易怒怎么办 生完孩子之后变懒了怎么办呀? 孩子三年级了成绩不突出家长怎么办 自私势力的父母想把我害死怎么办 父母如果养出自私的孩子怎么办 大人得了地图舌怎么办要怎么治疗 请问我家小孩有心理儿问题怎么办 想离婚妻子拿孩子命威胁怎么办 爸妈50多岁了吵架很严重怎么办 我和别人没离婚的老婆在一起怎么办 老婆起诉我离婚我不想理怎么办 上大学的孩子对考试无所谓怎么办 家里的人对我已经没有信心了怎么办 我是做股票配资的找不到客户怎么办 心理健康类的课程总是选不了怎么办 孩子该上初三了英语基础差怎么办 初二学生辍学半年又想上学怎么办 保险用的小红本丢了怎么办 孩子的小红本丢了怎么办 宝宝打针的小红本丢了怎么办 居民养老保险小红本丢了怎么办 小学六年级素质报告单丢了怎么办 西安小学素质报告册有b怎么办 辽宁省干部在线学习时长不够怎么办 鬼火一代发动机在中间卡死怎么办 医疗权与患者隐私权想冲突怎么办 登录法宣在线出现贴号失效怎么办 黔微普法在线竞答成绩不合格怎么办 怎么办刮过胡子后又长了? 网贷暴力催收警察也没办法怎么办 儿子把我车抵押给了高利贷怎么办 水泵开机五分钟左右就跳闸怎么办 离婚了她说过的不好你该怎么办 偏侧咀嚼笑时一边嘴歪怎么办 三相四线开关前地线有电怎么办 高三学生重度抑郁怎么办马高考了 潞城报名系统密码找不回来怎么办 绵阳富乐实验小学外地入学怎么办