indexDB的增删改查

DaVinci Configurator实战:从DBC导入到通信栈配置全解析 本文详细解析了如何使用Vector DaVinci Configurator工具,从导入行业标准DBC文件开始,高效完成AutoSAR通信栈(包括COM、PduR、CanIf等模块)的自动化与精细化配置。文章通过实战步骤,重点阐述了DBC导入、与EB MCAL协同、核心模块参数调整及诊断标定服务集成等关键环节,旨在帮助汽车电子工程师快速掌握这一核心工具,提升开发效率与准确性。 阅读详情

介绍

IndexedDB 是一种浏览器内置的低级 API,用于客户端存储大量结构化数据(包括文件/blob)。它的主要特点和用途包括:

  1. 结构化存储:可以存储复杂的 JavaScript 对象,而不仅仅是简单的键值对

  2. 索引查询:支持基于索引的高效数据检索

  3. 大容量存储:通常允许存储比 localStorage 大得多的数据(通常至少 250MB,甚至更多)

  4. 异步操作:所有操作都是异步的,不会阻塞 UI

  5. 事务支持:提供事务机制保证数据一致性

  6. 适用场景:适合存储应用状态、用户生成内容、缓存大量结构化数据等

特性会话缓存本地缓存数据库缓存
生命周期会话级持久持久
容量~5MB~5-10MB≥250MB
操作方式同步同步异步
数据结构键值对键值对结构化数据
查询能力简单键查询简单键查询复杂索引查询
适用场景临时会话数据小量持久数据大量结构化数据

博主使用场景:minio的分片上传,先将视频分片存储在indexDB中,用子线程实现分片上传

方法

开启数据库的连接

let db
// 开启的数据库名、版本 
const request = indexedDB.open('myDatabase3', 1)

  request.onupgradeneeded = function (event) {
    db = event.target.result
    // 类似 `表`的概念
    if (!db.objectStoreNames.contains('myObjectStore')) {
      // 创建一个对象存储
      const objectStore = db.createObjectStore('myObjectStore', {
          // 主键id
          keyPath: 'id',
      })
      // 设置索引,用于后续搜索
      objectStore.createIndex('numberIndex', 'number')
    }
  }

  request.onsuccess = function (event) {
    db = event.target.result
    console.log('数据库已成功打开')
  }

  request.onerror = function (event) {
    console.error('打开数据库失败', event.target.error)
  }

查询数据库

const transaction = db.transaction(['video'], 'readonly')
const videoObjectStore = transaction.objectStore('video')
const index = videoObjectStore.index('fileNameIndex')
// 查询所有名字为zhangsan.mp4的记录
const request = index.getAll('zhangsan.mp4')
request.onsuccess = function (event: any) {
    const data = event.target.result[0]
    }
    updateRequest.onerror = function () {
        console.error('保存视频之后更新录制结束状态失败')
    }
}

// 类似的其他的查询:
// 查询stateIndex 为 1的数据
const index = objectStore.index('stateIndex');
const request = index.getAll(IDBKeyRange.only(1));

// 查询全部
const index = objectStore.index('numberIndex')
const request = objectStore.getAll()


// 获取所有记录
const requestAll = store.getAll();
requestAll.onsuccess = function(event) {
  const results = event.target.result;
  console.log(results); // 包含所有记录的数组
};

// 获取键范围在1-10的前5条记录
const keyRange = IDBKeyRange.bound(1, 10);
const requestRange = store.getAll(keyRange, 5);
requestRange.onsuccess = function(event) {
  const results = event.target.result;
  console.log(results); // 最多5条记录的数组
};

新增数据

const transaction = db.transaction(['myObjectStore'], 'readwrite')
const objectStore = transaction.objectStore('myObjectStore')
const data = {
    id: 123
}
objectStore.add(data)

 修改数据

这个会根据id(主键,也就是创建表的时候设置的keyPath)去更新,

sliceData.state = 0
const transaction = db.transaction(['myObjectStore'], 'readwrite');
const objectStore = transaction.objectStore('myObjectStore');
const updateRequest = objectStore.put(sliceData);

 删除数据

const deleteIndexDB = () => {
  const transaction = db.transaction(['myObjectStore'], 'readwrite')
  const objectStore = transaction.objectStore('myObjectStore')
​
  // 根据主键删除数据
  const request = objectStore.delete(1)
​
  request.onsuccess = function (event) {
    console.log('数据已删除')
  }
​
  request.onerror = function (event) {
    console.error('删除数据失败', event.target.error)
  }
}

浏览器缓存的三个级别

1. 会话缓存 (Session Storage)

  • 生命周期:仅在当前浏览器标签页或窗口有效,关闭标签页/窗口后数据被清除

  • 作用域:仅在当前会话中可用,不同标签页即使访问相同网站也有独立的存储

  • 容量:通常 5MB 左右

  • API:window.sessionStorage

  • 特点:

    • 简单的键值对存储

    • 同步操作

    • 数据不持久化

  • 使用场景:临时保存敏感信息、单次会话中的状态保持

2. 本地缓存 (Local Storage)

  • 生命周期:持久化存储,除非用户手动清除或代码删除,否则一直存在

  • 作用域:同源策略下所有标签页共享

  • 容量:通常 5-10MB

  • API:window.localStorage

  • 特点:

    • 简单的键值对存储

    • 同步操作

    • 只能存储字符串,复杂对象需序列化

  • 使用场景:用户偏好设置、长期需要的小量数据存储

3. 数据库缓存 (IndexedDB/WebSQL)

  • 生命周期:持久化存储,除非用户手动清除

  • 作用域:同源策略下所有标签页共享

  • 容量:通常至少 250MB,甚至可达硬盘空间的 50%

  • API:window.indexedDB (WebSQL 已废弃)

  • 特点:

    • 支持结构化数据存储

    • 异步操作

    • 支持索引和高效查询

    • 支持事务

  • 使用场景:

    • 离线应用数据存储

    • 大型数据集处理

    • 需要复杂查询的应用

    • 渐进式 Web 应用(PWA)的核心技术之一

对比总结

特性会话缓存本地缓存数据库缓存
生命周期会话级持久持久
容量~5MB~5-10MB≥250MB
操作方式同步同步异步
数据结构键值对键值对结构化数据
查询能力简单键查询简单键查询复杂索引查询
适用场景临时会话数据小量持久数据大量结构化数据
华为OD机试 双机位C卷:微服务的集成测试 (C/C++/Py/Java/JS/Go) 华为OD机试 双机位C卷 :微服务的集成测试 ,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 微服务的集成测试 , 华为OD 微服务的集成测试 阅读详情

相关推荐

电机控制-PMSM无感FOC控制(四)SVPWM——过调制

上一章我们提到了SVPWM矢量合成的范围在一个平面的矢量圆内,那么当电压矢量超出调制范围时,该怎么做呢?这就是过调制要解决的问题。电机控制-PMSM无感foc控制(三)SVPWM据之前讲解的内容我们可以知道,SVPWM技术在电压空间上模拟了一个近似于圆的电压轨迹,减小了相电流的谐波,降低了电机的谐波损耗,抑制了转矩脉动。然而,SVPWM技术也存在一些问题,合成电压矢量有极限便是其中之一。这个半径为√3/3Vdc的区域也被称作SVPWM的线性区域。

zhuxinmingde的博客 1315

Indexeddb 创建、增删改查

虽然小伙伴平时项目用到的不多,但了解它并会使用还是很有必要。以下是本人总结 IndexedDB 的常规使用方式. 2. 打开数据库 3. 监听 IndexedDB 版本更新 新建数据库时,新增数据表。 更新数据库时,对数据表进行更新。 效果图如下 效果图如下 效果图如下 效果图如下 效果图如下

然后他就拿棍子来打我 8878

第33次CCF-CSP认证考试 第一题 词频统计 满分题解

本人小白一枚,抱着学习的态度想到网上找一些csp的参考答案,但由于实力有限,大佬的代码大都看不太懂,于是萌生了想用一些简单,基础的语句完成csp前两题的想法并公开,以便与像我这样实力不强的同学交流学习,如有更好的建议,还请斧正,感谢!

qq_75242106的博客 1869

JavaScript笔记之indexedDB的轻量化使用(增删改查)

前些日子尝试使用 HTML5 的 indexedDB,发现标准提出来的非关系型数据库真的很难用,根据自己理解基于 indexedDB 封装了一个轻量级的数据库管理类,能够快速的建表、存数据。 1.需求分析 介于 indexedDB 不人性化的事务操作,以及神奇的建表逻辑(只能通过升级数据库,在升级事件内建表!),考虑自己实际需求做了以下的取舍: 因为轻量级原因,我只需要建多张表而不需要建数据库,因此全局只要维护一个数据库实例即可; 因其离谱的建表逻辑(也有可能我没把握住),通过多次尝试,最终选择在需要.

Spider_wang的博客 2258

反无人机技术实战解析:从探测到拦截的全方位防御策略

本文深入解析了反无人机(C-UAS)技术的全链条防御策略。从雷达、无线电频谱、光电等多维度探测技术,到数据融合与威胁评估,再到无线电干扰、导航诱骗及物理拦截等核心拦截手段,系统阐述了如何构建从探测到拦截的实战化防御体系,为关键设施、大型活动等场景提供定制化空域安全解决方案。

weixin_29230649的博客 402

Cygwin安装教程

简介 cygwin是一个在windows平台上运行的unix模拟环境,是cygnus solutions公司开发的自由软件 Cygwin就是一个windows软件,该软件就是在windows上仿真linux操作系统 简言之,cygwin是一个在windows平台上运行的 linux模拟环境,使用一个Dll(动态链接库)来实现 这样,我们可以开发出Cygwin下的UNIX工具,使用这个DLL运行在W...

Errol's Blog 13万+

indexDB实现用户的删除和修改

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>in.

qq_50951790的博客 1339

BDD测试用例:Playwright的MCP Server实战

Playwright MCP Server建立了大模型和真实的浏览环境之间的桥梁,可以让大模型操作多款浏览器完成测试任务。

Criss@陈磊 450

indexedDB---浏览器本地数据库实现增删改查

indexedDB是浏览器本地数据库,既然是数据库就能够实现增删改查,了解了indexedDB的基本使用后,我们来实现它的增删改查功能, 这里使用音频文件上传的的示例,来演示本地数据库的增删改查功能,

I_am_shy的博客 2054

具身智能 | 从具身智能出发谈多传感器融合技术

多传感器融合感知是具身智能系统突破“感知—认知—行动”闭环的核心使能技术。本文从具身智能的视角出发,对多传感器融合技术进行系统综述。首先阐述了具身智能对多传感器融合提出的独特需求,包括异构感知集成、跨模态语义对齐和实时闭环决策。其次,构建了多层级融合技术分类框架,从数据层融合、特征层融合、决策层融合、时序融合到多模态大语言模型(MLLM)融合,逐层梳理主流方法与演进脉络。在此基础上,分析了面向具身智能的通用融合架构设计,涵盖了感知—推理—执行三层架构及其关键组件。

尘世冰封的专栏 311

AI漫剧全套万能提示词合集

今天给大家整理一套已经跑通爆款漫剧的万能提示词库!覆盖:豆包剧本人设词 + 分镜生成词 + 即梦绘图词 + 动态优化词 + 防翻车固定词直接复制粘贴,新手也能做出稳定、高清、统一、有质感的AI漫剧!你是资深短视频漫剧编剧,擅长制作60秒竖屏爆款AI漫剧,请为我创作一集完整漫剧内容。要求:开头3秒高能抓眼,中段有冲突转折,结尾留强悬念钩子,节奏紧凑、适合短视频流量。首先生成固定统一人物人设:包含脸型、五官、发色、发型、穿搭、身材、气质、画风、光影细节,要求足够精细,保证全程角色不变脸。

欢迎来到鸾姝淡月博客,专为程序员和编程爱好者打造的技术博客。我们分享编程语言趋势、开发工具、编程哲学、职业发展等,助你掌握新技术,优化技能,激发编程热情。 1902

【前端】之IndexedDB实现增删改查,包含简单示例

【代码】【前端】之IndexedDB实现增删改查,包含简单示例。

飘逸者打瞌睡 1677

【连接器专题】 EIA-364 系列标准的完整列表

EIA-364 系列标准在电子工业中具有重要的地位,为电子连接器和互连系统的测试和验证提供了统一的、可操作的流程和方法,有助于提高电子产品的质量和可靠性,促进了电子工业的发展

一点硬件 2660

indexDB简单的封装,增删改查

/* * @Author: lxl * @Date: 2020-08-01 16:37:34 * @LastEditTime: 2020-08-26 15:12:48 * @LastEditors: Please set LastEditors * @Description: In User Settings Edit * @FilePath: \dutyLeader1\src\util\dexie\index.js */ /** * @description: indexDB 在使用的时

weixin_41757599的博客 1649

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

indexDB 实现用户的增删改查

indexDB 实现用户的增删改查

weixin_53261137的博客 267

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

indexDB 数据库增删改查操作以及创建

indexDB:从DB看[indexDB是一个非关系型数据库]它不需要去写一些特定的sql语句来对数据库进行操作,因为他是nosql(not only sql)的数据形式使用的是JSON。 indexDB的特性 1️⃣对象仓库 indexDB内部才用对象仓库(ObjectStore)存放数据[因为indexDB没有表的概念,而是ObjectStore]所有的类型的数据都可以直接存入包括Jav...

weixin_43136017的博客 6265

indexdb

indexdb增删改查indexdbindexdb增删改查案例 indexdb 写这篇文章主要是,因为项目中用到了这个东西,这篇文章的主要内容,我主要是记录一下,当时我完成app登录拦截功能时的思路。做功能之前我主要去网上参考了几篇文章,首先我去看了一下概念,了解概念以后,就分别去了解了一下indexdb是如何建库建表新增查找数据的。链接我提供一下,阮一峰网络日志 indexdb增删改查案例 这里...

wenxiukeke的博客 1701

前端 IndexDB 操作入门教程

前端 IndexDB 操作入门教程 idb-js 基于indexdb本地数据库的封装 文档地址 安装: npm install idb-js --save 使用: 第一步: 引入Idb import Idb from 'idb-js' // 引入Idb 第二步: 引入数据库配置 import db_student_config from '....

YunWisdom 3174

前端超大缓存IndexDB、入门及实际使用

IndexDB的许多思想都和mysql有相似之处。我们发现,基本上增删改查都有相似的代码事务的独立性:每个事务都是独立的,不能共享。一旦事务完成,就不能再使用它。如果尝试在多个操作中重用同一个事务,会导致错误。数据一致性:每个事务确保数据的一致性。如果多个操作共享同一个事务,一个操作失败会导致整个事务回滚,影响其他操作。错误隔离:每个事务有自己的错误处理机制。如果一个事务失败,其他事务不会受到影响。通过每次操作声明新的事务,可以更好地控制错误处理和回滚。

yan1915766026的博客 3130

h5前端 indexDB的增删改查

【代码】h5 indexDB的增删改查。

weixin_49627031的博客 560

indexDB本地存储

HTML5新增了一种被称为indexDB的数据库,indexDB数据库是一种存储在客户端本地的NOSQL数据库。 indexDB是一个对象数据库,而不是关系数据库。 1、创建(打开)本地数据库 // indexedDB.open("数据库名",版本号); var request = indexedDB.open("mydb", 1.0); // onerror 事件表示请求失败 触发的事件 request.onerror = function () { console.log('创建或打开数据库失

你要走就走的博客 1669

indexDb使用

indexDb的使用&优缺点

qq_39692513的博客 1242

indexDB学习笔记——结合TodoList实战(附源码)

结合TodoList实战,掌握IndexDB增删改查的使用,解锁浏览器GB级存储能力

weixin_44134001的博客 856

本地存储IndexedDB 增删改查

最近遇到一个项目需要存储大量的数据,对比了一下各种存储,indexDB是最符合要求的,其特点就不列出来了,还是直接上代码吧。。indexDB的增删改查基本涵盖了,查询有根据主键查询,自己另外设置了索引,所以有相应的索引查询,然后另外写了一个模糊查询。有错误欢迎指正~ `let myDB = { name: ‘myDB’, version: 1, db: null, ojstore: { name:...

qq_29885565的博客 798

HTML5本地存储indexDB新建数据库、数据库增删改查操作

代码如下: &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;head&gt; &lt;meta charset="utf-8" /&gt; &lt;meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minim

CodingNoob 3443

vue + indexDB 使用记录

好记性不如烂笔头,仅作记录,如果有疑问欢迎留言,看到会回复的,只是一些个人理解,请勿上升高度。indexDB。

jhaglkl的博客 1554

浏览器数据库 IndexDB 封装示例

浏览器数据库 IndexDB 封装示例 感谢阮一峰大佬的技术分享 JS 封装示例 // indexDB.js // 打开或创建数据库(如果已经存在就打开,否则就创建) var dbName = 'project'; // success, error 可以不传 function openDB(version, success, error) { var req = indexedDB.open(dbName, version); req.onsuccess = function() {

锋利的二丫 694
上一篇: JS大文件的分流下载
下一篇: 直接输入的下拉选择框
BugCollect
博客等级 码龄1年 104粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值