文章目录

  • 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) {.......执行业务
})

IndexedDB封装相关推荐

  1. 一行代码,搞定浏览器数据库 IndexedDB

    作者 | 星尘starx 来源 | https://juejin.cn/post/6918705632757415950 前言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案可 ...

  2. indexed true mysql_一行代码,搞定浏览器数据库 IndexedDB

    前言 2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案可以选择: Cookie:上古时代就已存在,但能应用的业务场景非常有限 LocalStorage:使用简单灵活,但是容量只有 ...

  3. 富交互Web应用中的撤销和前进

    在web应用中,用户在进行一些富交互行为的操作时难免会出现误操作,比如在富文本编辑器设置错了字体颜色就需要撤回,做H5活动页面的时候不小心删了一个图片也需要撤回,更比如在线设计原型图应用的时候不小心删 ...

  4. electron 桌面端业务中的小结(坑)

    文章目录 简介 安装electron依赖 本地数据库选择 indexedDB 封装的库 SQLite Lowdb electron-store electron-json-storage-alt.el ...

  5. php indexdb,浏览器端数据库存储方案的整理 -- indexDB 和 localStorage

    有些安全性不太重要的数据,我不想花大力气搞一台服务器,再安装mysql或者 monogdb,再写点rest接口.这也太麻烦了,浏览器里本来就有很好用的数据库.你为什么不尝试一下呢? 1. 客户端存储目 ...

  6. IndexedDB 简单封装

    IndexedDB 浏览器数据库,是一个非关系型数据库,数据形式使用的是json,IndexedDB适合存储大量数据,它的API是异步调用的,当然他的api 也相对复杂. 当然浏览器数据存储 还有Lo ...

  7. indexedDB简易封装

    初学的时候写的demo,实际工作使用LOCALFORAGE库即可. /* indexedDB:讲道理是用在离线状态下储存大量的结构化数据操作风格就跟axios一样,是请求相比于cookie,这个的优势 ...

  8. IndexedDB 代码封装、性能摸索以及多标签支持

    前言 当一个 Javascript 程序需要在浏览器端存储数据时,你有以下几个选择: Cookie:通常用于 HTTP 请求,并且有 64 kb 的大小限制. LocalStorage:存储 key- ...

  9. 浏览器数据库IndexedDB介绍

    摘要 在移动端H5页面开发的时候,为了更好的提高用户体验,可以对不常变化的数据做浏览器端数据缓存,在用户打开页面的时候,首先加载本地的数据,然后异步请求服务端,更新数据.在移动端webview中,可以 ...

  10. 小议IndexedDB中的主要对象

    IndexedDB是在客户端的浏览器里存储大量数据的一个方案,网易云信的IM也使用了IndexedDB来存储客户的本地消息,而且随着PWA的兴起,学会使用IndexedDB是必不可少的.本文主要将In ...

最新文章

  1. C语言数组作为传入参数
  2. solr 使用自定义的 QueryParser
  3. Java集合框架之fastutil
  4. php sort 不同类型导致的问题
  5. hdu 5802——Windows 10
  6. python集合数据结构_Python数据结构-集合
  7. Linux项目第一次访问非常慢,后来很快的异常
  8. 用matlab的ADC和DAC过程,谈谈我理解的ADC和DAC
  9. Maven私服的配置和使用
  10. [人生]不经历风雨怎么见彩虹
  11. MongoDB 4.0 RC 版本强势登陆
  12. yii2 asset.php,Yii2中使用asset压缩js,css文件的方法_php实例
  13. python机器学习-糖尿病预测模型
  14. 详解什么是BT种子、迅雷下载链接、磁力链接
  15. oracle数据库查询904错误,EXP-00008:遇到ORACLE错误904问题详解
  16. 用自己的电脑搭建Web服务器建网站
  17. RL78平台开发注意点
  18. 语音识别(ASR)论文优选:端到端ASR综述Recent Advances in End-to-End Automatic Speech Recognition
  19. C语言进阶——指针笔试题图解
  20. properties文件乱码问题

热门文章

  1. Python——jieba分词并统计词频
  2. Linux驱动开发|WiFi驱动
  3. “windows无法完成格式化”解决办法
  4. 让你的软件支持繁体中文
  5. 强行进入远程计算机,远程桌面强制连接命令
  6. 纯干货内容:关于ivx和mendix的对比 还在犹豫选择那个低代码平台的小伙伴看过来
  7. java用1234组成_java编程题,java1234组成三位数不重复
  8. keli不支持中文,显示中文乱码
  9. 【C语言】判断素数的函数
  10. 5个最受欢迎的大数据可视化软件