当前位置: 首页 > news >正文

web客户端存储,IndexDB相关讲解

IndexDB详细讲解

IndexedDB 是浏览器提供的一种底层 API,用于在客户端存储大量结构化数据。相比 Web Storage(localStorage/sessionStorage),它支持更复杂的数据结构、事务处理、索引查询等高级功能。以下是一个系统化的讲解:

一、核心概念

1、​数据库(Database)​

  • 每个源(origin)可以创建多个数据库
  • 数据库有版本号,结构变化时需要升级版本

2、​对象存储(Object Store)​

  • 类似 SQL 的表,存储键值对
  • 可以定义主键(keyPath)或使用自动生成的键

3、​索引(Index)​

  • 基于对象存储的字段创建索引,加速查询
  • 可以创建多个索引,支持复合索引

4、​事务(Transaction)​

  • 所有操作必须在事务中进行
  • 三种模式:readonly、readwrite、versionchange

5、​游标(Cursor)​

  • 用于遍历对象存储或索引中的记录

6、​请求与事件

  • 异步 API,基于事件和请求响应模型

二、基本操作流程

1、打开/创建数据库

在 IndexedDB 中,打开或创建数据库是使用 indexedDB.open() 方法的入口操作。这个过程涉及版本控制、结构初始化、错误处理等关键环节。实例代码如下:

const request = indexedDB.open('myDB', 3); // 名称 + 版本号
request.onupgradeneeded = (event) => {
   
  // 数据库升级时触发(新建或版本号变化)
  const db = event.target.result;
  // 创建对象存储(如果不存在)
  if (!db.objectStoreNames.contains('users')) {
   
    const store = db.createObjectStore('users', {
   
      keyPath: 'id',         // 主键字段
      autoIncrement: true    // 自动生成主键
    });
    // 创建索引
    store.createIndex('age_idx'

相关文章:

  • 【实战指南】用MongoDB存储文档和图片等大文件(Java实现)
  • 破解内存瓶颈:如何通过内存池优化资源利用
  • 【算法day18】有效的括号——给定一个只包括 ‘(‘,‘)‘,‘{‘,‘}‘,‘[‘,‘]‘ 的字符串 s ,判断字符串是否有效。
  • 【第14届蓝桥杯C/C++B组省赛】01串的熵
  • PCA Jittering 图像增强
  • 【通过Groovy去热修复线上逻辑】1.执行线上数据修复 2.写工具
  • 仿函数 VS 函数指针实现回调
  • RAG现有技术方案
  • 【Golang】defer与recover的组合使用
  • PyCharm中使用pip安装PyTorch(从0开始仅需两步)
  • 设计和布局硬件电路是嵌入式系统开发的重要环节
  • 3.22日西南竞篮,NBA勇士VS老鹰,赛前数据前瞻
  • LeetCode 2643.一最多的行:模拟(更新答案)
  • Wispr Flow,AI语言转文字工具
  • 鸿蒙NEXT开发案例:程序员计算器
  • 使用若依AI生成springBoot的前后端分离版本
  • 为WordPress自定义一个留言板
  • 【QA】QT编译过程和C++编译过程的区别?
  • Flutter Dart 异步支持全面解析
  • Rocky9.5基于sealos快速部署k8s集群
  • 事关稳就业稳经济,10张海报看懂这场发布会的政策信号
  • 上海市政府常务会议研究抓好稳就业稳企业稳市场稳预期工作,让企业感受温度
  • 伊朗外长: 美伊谈判进展良好,讨论了很多技术细节
  • 持续更新丨伊朗官员:港口爆炸事件已致5人死亡
  • 特朗普将举行集会庆祝重返白宫执政百日,美媒:时机不当
  • 苏迪曼杯即将在厦门打响,国羽向创纪录的14冠进军