indexDB vue 批量创建表 和 批量插入数据

news/2024/12/26 22:56:22/
// 打开或创建数据库
const request = indexedDB.open('myDatabase');request.onerror = event => {console.error('打开数据库失败', event.target.errorCode);
};// 数据库版本变化时创建表
request.onupgradeneeded = event => {for (let i = 1; i <= 100; i++) {const db = event.target.result;db.createObjectStore(`table-${i}`);}
};// 打开数据库成功后循环下载数据并存储
request.onsuccess = event => {for (let i = 1; i <= 100; i++) {const url = `http://example.com/data-${i}.json`;fetch(url).then(response => response.json()).then(data => {console.log(`第 ${i} 个数据:`, data);// 将数据存入 IndexedDBconst db = event.target.result;const transaction = db.transaction([`table-${i}`], 'readwrite');const objectStore = transaction.objectStore(`table-${i}`);const request = objectStore.put(data,`table-${i}`);request.onsuccess = () => {console.log(`数据已存储到表 ${i}`);};request.onerror = () => {console.error(`存储数据到表 ${i} 失败`);};}).catch(error => {console.error(`下载第 ${i} 个数据失败:`, error);});}
};

1 如果你不知道数据库的版本号,可以省略第二个参数,这样 indexedDB 会默认为你打开最新版本的数据库,因为版本号总是自增长的

const request = indexedDB.open('myDatabase', 1);

objectStore.add() 和 objectStore.put()

objectStore.add() 和 objectStore.put() 方法的参数类型都是任意类型,可以是简单类型(如字符串、数字等),也可以是对象、数组等复杂类型。它们的主要区别在于对于已存在的数据的处理方式。

  • 对于 objectStore.add() 方法,如果尝试添加一个主键值已经存在的数据,将会抛出一个 ConstraintError 错误,表示数据添加失败。
  • 对于 objectStore.put() 方法,如果尝试添加一个主键值已经存在的数据,则会直接更新这条数据。

因此,如果你希望同一个主键值能够对应多条数据,那么可以使用 objectStore.add() 方法;如果你希望同一个主键值只对应一条数据,那么可以使用 objectStore.put() 方法。


http://www.ppmy.cn/news/1053552.html

相关文章

Django笔记之全局异常处理

这一篇笔记介绍 Django 的全局异常处理。 当我们在处理一个 request 请求时&#xff0c;会尽可能的对接口数据的格式&#xff0c;内部调用的函数做一些异常处理&#xff0c;但可能还是会有一些意想不到的漏网之鱼&#xff0c;造成程序的异常导致不能正常运行&#xff0c;甚至会…

使用nrm快速切换npm源以及解决Method Not Implemented

文章目录 什么是nrm如何使用nrm查看本机目前使用的npm 源安装nrm查看可选源查看当前使用源切换源添加源删除源测试源的响应时间 如果你遇到这个报错&#xff0c;就可以采用这种方案解决哦解决方案&#xff1a;1. 切换为官方源2. 查看漏洞3. 修复漏洞4. 下面命令慎重使用&#x…

电商平台按关键字搜索商品淘宝京东拼多多api接口PHP示例

关键词搜索商品接口的作用是通过调用接口来实现在电商平台中进行商品搜索。具体而言&#xff0c;该接口可以提供以下功能和作用&#xff1a; 商品搜索&#xff1a;用户可以通过输入关键词&#xff0c;在电商平台上进行商品搜索。接口可以根据关键词对商品的名称、描述、标签等…

Mybatis 建立依赖失败:报错Dependency ‘mysql:mysql-connector-java:8.0.28‘ not found

Mybatis 建立依赖失败&#xff1a;报错Dependency ‘mysql:mysql-connector-java:8.0.28’ not found 解决办法&#xff1a; 写完依赖代码&#xff0c;直接重构&#xff0c;下载依赖。 图片: ![Alt](https://img-home.csdnimg.cn/images/20220524100510.png Mac 版本注意Ide…

10种最流行的3D模型文件格式及转换方法

3D 文件格式用于存储有关 3D 模型的信息。 你可能听说过一些最流行的格式&#xff0c;包括 STL、OBJ、FBX 和 DAE。 它们广泛应用于从视频游戏动画到工业增材制造的各种应用中。 在本文中&#xff0c;我们将考虑为什么有这么多不同的格式&#xff0c;探讨 3D 文件格式存储的四…

PMP串讲

&#xff01;5种冲突解决策略 &#xff01;敏捷3355。 &#xff1f;PMP项目管理132种工具技术合集&#xff1a; 参考2&#xff1a;项目管理的132种工具 - 水之座 ?质量管理,有多少种图&#xff1a; ?风险管理,有多少种图&#xff1a; --参考&#xff1a;PMP相关的十八种…

前端需要理解的HTML知识

HTML&#xff08;超文本标记语言&#xff0c;HyperText Markup Language&#xff09;不是编程语言&#xff0c;而是定义了网页内容的含义和结构的标记语言。。“超文本”&#xff08;hypertext&#xff09;是指连接单个网站内或多个网站间的网页的链接。HTML 使用“标记”&…

Vue使用Animate.css

说一下Animate.css这个动画库&#xff0c;很多的动画在这个库里面都定义好了&#xff0c;我们用的时候可以直接使用里面的类名就可以了&#xff0c;就是直接目标元素绑定对应的类名就可以实现动画效果&#xff0c;非常方便&#xff0c;库其实也相对简单&#xff0c;使用起来也简…