HTML5 中 IndexedDB 怎么清空整个数据库的所有存储对象

胖瑶吖_4470

胖瑶吖_4470

2026-10-23

410人浏览

原创

最直接有效的方式是删除整个数据库并重新创建。调用 deletedatabase 删除后,用递增版本号 open 重建,在 onupgradeneeded 中不创建 object store 即可清空;或逐个调用各 object store 的 clear() 方法。

html5 中 indexeddb 怎么清空整个数据库的所有存储对象

要清空 IndexedDB 数据库中的所有存储对象(object store),最直接有效的方式是删除整个数据库,然后重新创建。IndexedDB 本身不提供“清空数据库”的 API,但可以通过 deleteDatabase + 重建方式实现等效效果。

方法一:删除并重新打开数据库(推荐)

这是最可靠、兼容性好、语义清晰的做法。关键在于在 onupgradeneeded 中不创建任何 object store,或仅按需重建:

  • 调用 window.indexedDB.deleteDatabase("your-db-name") 删除数据库
  • 立即用相同名称调用 indexedDB.open("your-db-name", newVersion)(版本号必须递增)
  • 在 onupgradeneeded 回调中,不执行 createObjectStore,或只创建你需要的空结构

示例代码:

Html2md
Html2md

使用 Readability + Turndown 将 HTML 页面转换为干净的、Agent 友好的 Markdown。去除导航栏、广告、页脚、Cookie 横幅、社交按钮等干扰元素。支持 URL...

下载
const dbName = "myAppDB";

// 先删除
const deleteReq = indexedDB.deleteDatabase(dbName);
deleteReq.onsuccess = () => {
  console.log("数据库已删除");
  // 立即重建(版本号 +1)
  const openReq = indexedDB.open(dbName, 1);
  openReq.onupgradeneeded = (event) => {
    const db = event.target.result;
    // 不调用 db.createObjectStore → 所有 object store 都不存在
    console.log("数据库已重建,无任何 object store");
  };
  openReq.onsuccess = (event) => {
    console.log("清空完成,可开始使用新数据库");
  };
};

方法二:逐个清空每个 object store(适用于不能删库的场景)

如果数据库正在被其他标签页使用,或你只想清数据但保留 schema 结构,可以遍历所有 object store 并调用 clear():

  • 先用 indexedDB.open 打开数据库(指定当前版本)
  • 在 onupgradeneeded 中获取 event.target.result.objectStoreNames
  • 在 onsuccess 后,对每个 object store 发起 clear() 请求

注意:必须在 versionchange 事务外操作(即不能在 onupgradeneeded 中 clear),且需确保没有其他连接正在写入。

注意事项

  • 版本号必须递增:重建数据库时,第二个参数(version)要比原版本高,否则 onupgradeneeded 不会触发
  • 异步行为:deleteDatabase 和 open 都是异步操作,需通过事件回调控制流程,不可同步等待
  • 多标签页影响:deleteDatabase 会等待所有已有连接关闭;若其他页面正打开该库,删除会延迟直到它们关闭
  • 无“清空数据库”快捷 API:IndexedDB 标准未定义类似 db.clearAll() 的方法,不要尝试查找不存在的接口

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!

相关专题

更多
python是前端还是后端
python是前端还是后端

Python属于前端也属于后端,其灵活性和丰富的生态系统使得开发人员能够在不同的领域中灵活运用。本专题为大家提供python相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.11

2603

5

前端如何实现即时通讯
前端如何实现即时通讯

实现即时通讯的方法有WebSocket、Long Polling、Server-Sent Events、WebRTC等等。详细介绍:1、WebSocket,它可以在客户端和服务器之间建立持久连接,实现实时的双向通信,前端可以使用 WebSocket API来创建WebSocket连接,并通过发送和接收消息来实现即时通讯;2、Long Polling,是一种模拟实时通信的技术等等。

2023.10.09

5663

6

前端和后端的区别
前端和后端的区别

前端关注的是用户界面的设计和交互,而后端则注重数据处理和逻辑控制。想了解更多前端后端的相关内容,可以阅读本专题下面的文章。

2024.03.19

6650

13

php和前端的关联介绍
php和前端的关联介绍

php既可以作为前端语言,也可以作为后端语言。想了解更多php和前端的相关内容,可以阅读本专题下面的文章。

2024.03.22

6338

10

前端外包工作内容有哪些
前端外包工作内容有哪些

前端外包工作内容包括:1. 网站和应用程序开发;2. 用户界面和交互设计;3. 用户体验优化;4. 设计和视觉开发;5. 跨浏览器兼容性;6. 性能优化;7. 维护和更新;8. 项目管理和沟通。想了解更多前端的相关内容,可以阅读本专题下面的文章。

2024.05.22

903

5

html版权符号
html版权符号

html版权符号是“©”,可以在html源文件中直接输入或者从word中复制粘贴过来,php中文网还为大家带来html的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

6495

7

html在线编辑器
html在线编辑器

html在线编辑器是用于在线编辑的工具,编辑的内容是基于HTML的文档。它经常被应用于留言板留言、论坛发贴、Blog编写日志或等需要用户输入普通HTML的地方,是Web应用的常用模块之一。php中文网为大家带来了html在线编辑器的相关教程、以及相关文章等内容,供大家免费下载使用。

2023.06.21

3612

4

html网页制作
html网页制作

html网页制作是指使用超文本标记语言来设计和创建网页的过程,html是一种标记语言,它使用标记来描述文档结构和语义,并定义了网页中的各种元素和内容的呈现方式。本专题为大家提供html网页制作的相关的文章、下载、课程内容,供大家免费下载体验。

2023.07.31

3290

5

html空格
html空格

html空格是一种用于在网页中添加间隔和对齐文本的特殊字符,被用于在网页中插入额外的空间,以改变元素之间的排列和对齐方式。本专题为大家提供html空格的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.01

3319

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
GDB 17.2 官方文档集合
GDB 17.2 官方文档集合

共0课时 | 0人学习

Bootstrap 入门安装配置
Bootstrap 入门安装配置

共0课时 | 0人学习

38+ PhpStorm 提示和技巧
38+ PhpStorm 提示和技巧

共1课时 | 226人学习