vue3 中使用indexDb

news2025/1/11 10:13:43

1.indexDb.js

const indexDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
class IndexDBCache {
  // 构造函数
  constructor() {
    this._db = null; //数据库
    this._transaction = null; //事务
    this._request = null;
    this._dbName = "loginInfoDb"; //数据库名
    this._cacheTableName = "loginInfoTable"; //表名
    this._dbversion = 1; //数据库版本
  }
  initDB(val) {
    return new Promise((resolve, reject) => {
      this._request = indexDB.open(this._dbName, this._dbversion); // 打开数据库
      // 数据库初始化成功
      this._request.onsuccess = (event) => {
        this._db = this._request.result;
        resolve(event);
      };
      // 数据库初始化失败
      this._request.onerror = (event) => {
        reject(event);
      };
      // 数据库初次创建或更新时会触发
      this._request.onupgradeneeded = (event) => {
        let db = this._request.result;
        if (!db.objectStoreNames.contains(this._cacheTableName)) {
          db.createObjectStore(this._cacheTableName, {
            keyPath: val, // 设置主键
          });
        }
        resolve(event);
      };
    });
  }
  closeDB() {
    this._db.close();
    console.log(`关闭数据库`);
  }
  addData(params) {
    return new Promise((resolve, reject) => {
      let transaction = this._db.transaction(this._cacheTableName, "readwrite");
      let store = transaction.objectStore(this._cacheTableName);
      let response = store.add(params);
      // 操作成功
      response.onsuccess = (event) => {
        console.log("操作成功");
        resolve(event);
      };
      // 操作失败
      response.onerror = (event) => {
        console.log("操作失败");
        reject(event);
      };
    });
  }
  // 通过主键读取数据
  getDataByKey(key) {
    return new Promise((resolve, reject) => {
      let transaction = this._db.transaction(this._cacheTableName);
      let objectStore = transaction.objectStore(this._cacheTableName);
      // 通过主键读取数据
      let request = objectStore.get(key);
      // 操作成功
      request.onsuccess = () => {
        resolve(request.result);
      };
      // 操作失败
      request.onerror = (event) => {
        reject(event);
      };
    });
  }
  // 清空数据库数据
  clearDB() {
    return new Promise((resolve, reject) => {
      let transaction = this._db && this._db.transaction(this._cacheTableName, "readwrite");
      let store = transaction && transaction.objectStore(this._cacheTableName);
      let response = store && store.clear();
      // 操作成功
      response.onsuccss = (event) => {
        console.log("清空数据库数据");
        resolve(event);
      };
      // 操作失败
      response.onerror = (event) => {
        reject(event);
      };
    });
  }

  deleteDBAll(dbName) {
    console.log(dbName);
    let deleteRequest = indexDB.deleteDatabase(this._dbName);
    return new Promise((resolve, reject) => {
      deleteRequest.onerror = function (event) {
        console.log("删除失败");
      };
      deleteRequest.onsuccess = function (event) {
        console.log("删除数据库成功");
      };
    });
  }
}
export default IndexDBCache;

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602296.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

API ‘variantOutput.getPackageLibrary()‘已过时的解决方法

一个发布到maven central的android库项目,为了方便管理,在build.gradle文件中加入了打包处理的一段脚本: //生成aarlibraryVariants.all { variant ->def name "library-${versionMajor}.${versionMinor}.${versionPatch}.aar"…

VUE 3.0 + NGINX + Hls.js + OBS -- 直播推拉流、流视频播放

🛴🛴前言: 该 Demo 基于 OBS推流 Nginx Vue 3.0 Nplayer.js hls.js ,目的只是实现流媒体播放,以及简易推拉流直播。 文章目录 前端组件 NPlayer.js安装 nplayer.js 流视频播放页面元素初始化播放器清晰度控件样式…

D*算法详解 (D星算法 / Dynamic A*算法/ Dstar算法)(死循环解决)

所需先验知识(没有也无大碍,只是了解的话会对D*的理解有帮助):A*算法/ Dijkstra算法 何为D*算法 Dijkstra算法是无启发的寻找图中两节点的最短连接路径的算法,A*算法则是在Dijkstra算法的基础上加入了启发函数h(x)&am…

js正则中的match()

在前端开发中,正则表达式是一大利器。所以我们这次就来讨论下match()方法。 match本身是JavaScript语言中字符串对象的一个方法,该方法的签名是 match([string] | [RegExp]) 它的参数既可以是一个字符串,也可以是一个正则表达式。该方法绝…

windows 达梦数据库服务连接时提示:登录服务器失败,错误号6001,错误消息:网络通信异常 之数据库服务不存在的处理方式

在windows客户端上连接部署在windows操作系统上的达梦数据库, 使用DM管理工具连接数据库 正确输入用户名与密码之后点击确定按钮之后出现: 登录服务器失败,错误号6001,错误消息:网络通信异常 现象 如下图所示&#…

银行从业资格证 个人理财 各种年金计算公式总结

变量说明: C C C :每期投入的现金流 r r r:利率(收益率/贴现率) n n n :计息期数; F V FV FV:终值 P V PV PV:现值 推导计算过程用到等比数列求和公式 S n a 1 ∗ 1 −…

【算法训练(day7)】区间和并,离散化数组模板

目录 一.区间和并 二 .离散化数组 一.区间和并 问题:给定 n个区间 [li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3][1,3] 和 [2,6][2,6] 可以合并为一个区间 [1,6][1…

htmlCSS-----CSS介绍与样式书写

目录 前言: 1. CSS是什么 2. CSS书写样式 (1)行内样式 (2)内部样式 3.外部样式 4.三者之间的比较 前言: 前面我们学习了HTML的相关标签和框架写法,那我们在了解这些标签用法了之后就要学会怎么去通过相关方法来使得界面美化处理&#xf…

06 Redis分布式锁

常见面试问题 Redis除了拿来做缓存,你还见过基于Redis的什么用法?Redis 做分布式锁的时候有需要注意的问题?如果是 Redis 是单点部署的,会带来什么问题?那你准备怎么解决单点问题呢?集群模式下&#xff0c…

LeetCode刷题集(七)(2315.统计星号)

😦学习目标:拿下LeetCode2315.统计星号题目 😤 学完本章节知识即可掌握本题! 学习内容:LeetCode2315.统计星号 😤题目:给你一个字符串 s ,每 两个 连续竖线 ‘|’ 为 一对 。换言之&…

知识图谱涉及技术点分析

文章目录 数据从哪里来为什么通常将知识图谱划分到NLP领域?常用NLP技术点分析只是NLP任务吗?graph embedding知识融合业务还是算法?知识图谱组成 数据从哪里来 是手动提取关系吗?数据很多,关系确难涉及大量NLP技术关系…

Ansible基础五——条件语句、循环语句、handlers、任务失败处理

文章目录 一、 循环语句1.1 单量循环1.2 多量循环1.3 老版本用法1.4 loopregister 二、条件判断2.1 根据变量状态判断2.2 根据变量是否存在判断2.3 根据事实判断2.4 多条件判断2.4.1 and用法2.4.2 or用法 2.5 循环判断2.6 根据上个任务结果判断 三、handlers处理程序四、任务失…

5月《中国数据库行业分析报告》正式发布,首发时序、实时数据库两大【全球产业图谱】

为了帮助大家及时了解中国数据库行业发展现状、梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新《中国数据库行业分析报告》,持续传播数据技术知识、努力促进技术创新与行业生…

ubuntu20安装xrdp以及解决黑屏问题

1、安装xrdp sudo apt-get install xrdp 2、将xrdp用户加入到如下用户组 sudo adduser xrdp ssl-cert 3、重启xrdp sudo service xrdp restart 4、打开windows远程面,连接,如果出现黑屏 sudo -s sudo vim /etc/xrdp/startwm.sh 加入如下内容&#xff…

攻防世界-web-Web_php_unserialize

1. 题目描述:查看以下代码,获取flag 2. 思路分析 从代码中不难看出,这里共有三个地方需要绕过 2.1 __wakeup函数:若在对象的魔法函数中存在的__wakeup方法,那么之后再调用 unserilize() 方法进行反序列化之前则会先…

数据分析概述

数据分析概述 数据的性质数据的概念数据与信息的区别和联系 数据的类型按照度量尺度分按时间状况分 什么是数据分析数据分析的重要性数据分析的内容数据分析作用 数据分析的基本流程典型的数据分析的流程 数据分析方法对比分析法分组分析法定量数据分布分析——具体事例 结构分…

上海亚商投顾:沪指高开高走 地产股迎来久违反弹

上海亚商投顾前言:无惧大盘涨跌,解密龙虎榜资金,跟踪一线游资和机构资金动向,识别短期热点和强势个股。 市场情绪 三大指数今日高开高走,沪指午后涨近1%,深成指、创业板指涨超1.2%,上证50盘中大…

惠更斯定理和格林定理

惠更斯原理和格林定理 惠更斯原理显示了表面上的波场如何决定表面 S S S外的波场。惠更斯在17世纪启发性地表达了这一概念。但这个想法的数学表达是由于19世纪的乔治格林。这一概念可以在数学上表达为标量波和矢量波。矢量波情形的推导与标量波情形是同态的。但是标量波情况下…

少儿编程python-一级

少儿编程python 文章目录 前言CSP-J与CSP-S少儿编程证书含金量排名(国家承认的少儿编程证书)非专业级软件能力认证(CSP-J/S)青少年编程能力等级测试(CPA)蓝桥杯青少年信息技术等级考试全国青少年软件编程等…

造船厂事故/风险(背景+官方统计数据)

造船厂事故/风险(背景官方统计数据) 船厂工地常见事故船厂事故:发人深省的伤害统计船厂工地常见的风险有哪些? 造船业是周期性的、资本密集型的行业。更严格的环境法规于2020年初生效,引发了对抑制船舶废气硫排放技术的需求。与此同时&#…