当前位置: 首页 > Web前端 > HTML

indexedDB聊天记录存储方式总结

时间:2023-04-02 22:58:05 HTML

前段时间项目需要在本地存储聊天数据,使用了indexedDB。查阅了很多文章,终于完成了。感觉网上关于indexedDB的文章不够多,也不够完善,所以把代码分享出来,帮助有需要的人。由于时间关系,就不做详细介绍了,以后再补充说明。打开数据库IndexedDB.openDB(myDB.name,myDB.version,function(e){//成功回调});添加数据:IndexedDB.addData(myDB.db,"talkList",[{id:serverMsgId,name:nickName,target:muid.toLocaleLowerCase(),time:time,type:2,msg:tempmsg}]);查询数据:IndexedDB.getDataByMultiple(myDB.db,"talkList","target",id.toLocaleLowerCase(),function(e){//成功回调});indexedDB.js:varmyDB={name:'GRTalk',version:1,db:null,ojstore:[{name:'name',//存储空间表的名称keypath:'id'//主键}]};varIndexedDB={indexedDB:window.indexedDB||window.webkitindexedDB,IDBKeyRange:窗口.IDBKeyRange||window.webkitIDBKeyRange,//keyrangeopenDB:function(dbname,dbversion,callback){//创建或打开数据库,创建对象存储空间(ObjectStore)varself=this;var版本=数据库版本||1;varrequest=self.indexedDB.open(dbname,version);request.onerror=function(e){console.log(e.currentTarget.error.message);};request.onsuccess=function(e){myDB.db=e.target.result;console.log('成功创建并打开数据库:'+myDB.name+'version'+dbversion);回调&&回调(e);};request.onupgradeneeded=function(e){vardb=e.target.result;如果(!db.objectStoreNames.contains('talkList')){varobjectStore=db.createObjectStore('talkList',{keyPath:'id'});objectStore.createIndex('target','target',{unique:false});}}},deletedb:function(dbname){//删除数据库varself=this;self.indexedDB.deleteDatabase(数据库名);console.log(dbname+'数据库已删除')},closeDB:function(db){//关闭数据库db.close();console.log('databaseisclosed')},addData:function(db,storename,data){//添加数据,重复添加会报错try{varstore=db.transaction(storename,'readwrite').objectStore(storename)、要求;}catch(e){alert(e)}for(vari=0;i