当前位置: 首页 > 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集群
  • 美国防部监察机构扩大“群聊门”事件调查范围
  • 魔都眼|西岸国际咖啡生活节:连接艺术、音乐与宠物
  • 王受文已任中华全国工商业联合会领导班子成员
  • 普京与卢卡申科举行会晤,将扩大在飞机制造等领域合作
  • “光荣之城”2025上海红色文化季启动,红色主题市集亮相
  • 浙商银行外部监事高强无法履职:已被查,曾任建行浙江省分行行长