当前位置: 首页 > 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'
http://www.dtcms.com/a/84113.html

相关文章:

  • 【实战指南】用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集群
  • C++Primer学习(13.2 拷贝控制和资源管理)
  • 搜广推校招面经五十六
  • 基于linux平台的C语言入门教程(4)输入输出
  • MySQL表的增加、查询的基础操作
  • 解决用户同时登录轮询获取用户信息错乱,使用WebSocket和Server-Sent Events (SSE)
  • Vue 3 项目实现国际化指南 i18n
  • 鸿蒙harmonyOS笔记:练习CheckBoxGroup获取选中的值
  • JavaScript 中的性能优化:从基础到高级技巧
  • C++实现求解24点游戏
  • 异步编程与流水线架构:从理论到高并发