使用Dexie操作前端数据库IndexedDB 教程

使用Dexie操作前端数据库IndexedDB 教程

Dexie.js 是对前端本地数据库 IndexedDB 的 API 进行封装的轻量级库,它简化了 IndexedDB 复杂的原生操作,提供了更简洁、直观的语法,便于开发者快速实现前端本地数据的持久化存储。

一、为什么选择 IndexedDB?

前端常见的本地存储方案(Cookie、LocalStorage、SessionStorage)均存在存储容量限制,无法满足大数据量的存储需求。IndexedDB 作为浏览器原生的本地数据库,具备大容量存储优势,具体对比如下:

  • Cookie:存储容量不超过 4KB,主要用于存储会话标识等少量信息;
  • LocalStorage:存储容量介于 2.5MB ~ 10MB 之间,仅支持字符串存储;
  • SessionStorage:存储容量与 LocalStorage 相当,但仅在当前会话有效,页面关闭后数据丢失;
  • IndexedDB:存储容量不低于 250MB,支持占用本地磁盘空间的 50%,可存储大量结构化数据,支持事务、索引等数据库核心特性。

二、安装 Dexie

使用包管理器(pnpm、npm、yarn)快速安装 Dexie:

pnpmadd dexie 

三、核心操作步骤

3.1 创建数据库(Database)

通过 new Dexie() 创建数据库实例,指定数据库名称。若数据库不存在则自动创建,若已存在则直接打开。

3.2 创建表(Table)

通过 version().stores() 定义数据库版本及表结构,包括主键、索引等信息。表结构定义需与数据库版本绑定,版本升级时可同步更新表结构。

importtype{ Table }from'dexie';// 定义表结构:版本1中创建 "users" 表 db.version(1).stores({ users:'++id, userName',// ++id 表示自增长主键;userName 表示为该字段创建索引});// 获取 "users" 表实例,用于后续数据操作let users: Table<StoreUserData>; users = db.table('users');

说明:

  • ++id:自增长整数主键,插入数据时无需手动指定 id,数据库会自动生成;
  • userName:为该字段创建索引,可提升按 userName 查询的效率。

3.3 数据操作:增删改查(CRUD)

3.3.1 新增数据(增)

使用 add() 方法插入单条数据,主键(id)会自动生成。

// 插入一条用户数据,无需指定 id db.users.add({ userName:'zhangsan'});
3.3.2 修改/新增数据(改)

使用 put() 方法实现“插入或更新”(upsert)功能:若数据不存在(根据主键判断)则新增,若已存在则覆盖修改。

// 若 id=1 的数据存在则修改 userName,不存在则新增该数据 db.users.put({ id:1, userName:'zhangsan'});

3.3.3 删除数据(删)

使用 delete() 方法根据主键删除单条数据。

3.3.4 查询数据(查)

Dexie 提供了丰富的查询方法,支持按主键查询、条件查询、排序、分页等场景:

// 1. 按主键查询单条数据 db.users.get(1).then(res =>console.log('主键id=1的用户:', res));// 2. 条件查询(两种常用方式)// 方式1:按字段条件查询 db.users.where('userName').equals('zhangsan').toArray().then(res =>console.log('用户名为zhangsan的用户:', res));// 方式2:按对象匹配条件查询 db.users.where({ userName:'zhangsan'}).toArray().then(res =>console.log('用户名为zhangsan的用户:', res));// 3. 查询第一条数据(按id升序) db.users.orderBy('id').first().then(res =>console.log('第一条用户数据:', res));// 4. 查询最后一条数据(按id升序) db.users.orderBy('id').last().then(res =>console.log('最后一条用户数据:', res));// 5. 查询表中数据总数 db.users.count().then(count =>console.log('用户总数:', count));// 6. 分页查询(按id倒序,查询前100条数据) db.users.orderBy('id').reverse()// 倒序排列(默认升序).offset(0)// 偏移量,从第0条开始(即跳过前0条).limit(100)// 限制查询数量,最多返回100条.toArray().then(res =>console.log('分页查询结果:', res));

四、TypeScript 封装优化

通过类封装数据库操作,结合 TypeScript 类型定义,提升代码可维护性和类型安全性:

importtype{ Table }from'dexie';import Dexie from'dexie';// 定义用户数据类型接口,约束数据结构exportinterfaceStoreUserData{ id?:number;// 主键可选,插入时自动生成 userName:string;// 用户名,必传字段}// 封装数据库类exportclassUserDataBaseextendsDexie{// 定义表实例,指定数据类型 users!: Table<StoreUserData>;// 数据库版本private localVersions =1;constructor(){// 调用父类构造函数,指定数据库名称super('UserDataBase');// 初始化数据库版本和表结构this.version(this.localVersions).stores({ users:'++id, userName'// 与前文表结构一致});// 赋值表实例this.users =this.table('users');}}// 创建数据库实例,供全局使用exportconst usersDB =newUserDataBase();

五、查看 IndexedDB 数据

可通过浏览器开发者工具直观查看和操作 IndexedDB 中的数据,步骤如下:

  1. 打开浏览器(Chrome/Firefox/Edge 等)的开发者工具(快捷键 F12 或 Ctrl+Shift+I);
  2. 切换到「应用」(Application)面板;
  3. 在左侧导航栏中找到「存储」-「IndexedDB」;
  4. 展开对应数据库(如 UserDataBase)和表(如 users),即可查看表中数据,支持新增、修改、删除等操作。

六、参考资料

Read more

AniShort正式发布:为AI短剧协作而生,重构AI短剧生产流程

AniShort正式发布:为AI短剧协作而生,重构AI短剧生产流程

AniShort正式发布:为AI短剧协作而生,重构AI短剧生产流程,3人团队提效800% 2026年3月,AI短剧创作领域迎来重磅精品。随着生成式视频技术的成熟,单打独斗式的“一人一剧”已成为可能,但团队协同、项目管理的效率瓶颈却日益凸显——素材散落在各个软件工具和各个文件夹,版本更迭混乱,审阅沟通反复低效。针对这一痛点,全新AI短剧(视频)协同创作平台AniShort正式发布,以“为AI短剧协作而生”为使命,重新定义团队化、工业化短剧生产方式。 一、AI短剧制作流水线(提效100%):从“生成零散视频”到“全流程协同管理” 当前市面上的AI视频工具多聚焦于单点功能——生成脚本、文生图、图生视频,彼此割裂。创作者不得不在多个软件间反复切换,项目文件、版本记录、协作反馈分散在聊天记录和本地文件夹中,难以形成高效闭环。 AniShort的诞生,正是为了打破这一困局。平台将创意策划、视觉预演、制作执行、审阅交付全链路整合于一体,构建从灵感到成品的“All-in-One”创作中枢。

使用VS Code插件搭建AI开发环境完全指南

使用VS Code插件搭建AI开发环境完全指南

1. AI编程工具概述 目前主流的AI编程工具主要分为三类:集成IDE、插件模式和独立CLI。其中,插件模式以其轻量级和高兼容性成为许多开发者的首选。通过在VS Code中安装相应插件,开发者可以在不离开熟悉的编辑器环境的情况下,享受到AI辅助编程的便利。 插件模式的优势在于: 无需切换编辑器,保持开发环境一致性 可根据需求灵活选择不同AI模型 资源占用小,启动速度快 支持与本地开发环境深度集成 2. VS Code AI插件选择 目前市场上有多种VS Code AI插件可供选择,各有特色。以下是几款主流插件的对比分析: 插件名称 开发公司 主要特点 中文支持 推荐指数 RooCode 第三方 支持多种模型,架构/编码/问答模式 优秀 ★★★★★ TRAE 字节跳动 原名MarsCODE,支持国产模型 优秀 ★★★★☆ 通义灵码 阿里巴巴 基于千问模型,集成阿里生态 优秀 ★★★★☆ CodeBuddy

ChatGPT平替!LocalAI+cpolar让大模型在笔记本电脑跑起来,数据全程不联网

ChatGPT平替!LocalAI+cpolar让大模型在笔记本电脑跑起来,数据全程不联网

文章目录 * 前言 * 【视频教程】 * 1. Docker部署 * 2. 简单使用演示 * 3. 安装cpolar内网穿透 * 4. 配置公网地址 * 5. 配置固定公网地址 前言 当你需要处理商业合同却担心GPT泄露机密时,LocalAI给出了完美解决方案——这个开源项目让Llama、Stable Diffusion等大模型直接运行在个人设备上,所有数据处理全程不离开本地网络。最令人惊喜的是它突破性地支持CPU推理,我的四年老笔记本也能流畅运行7B参数模型,彻底消除了AI使用的硬件门槛。现在我用它处理客户合同,再也不用担心敏感信息上传云端,这种"隐私安全感"是商业AI服务无法比拟的。 在法律文书处理场景中,LocalAI的"私有化部署"特性展现出独特优势——我将客户的保密协议导入本地模型,让AI辅助生成条款建议,整个过程文档从未离开办公电脑。而"模型切换"功能则让我能随时在法律专用模型和通用写作模型间切换,这种灵活性比单一功能的AI工具实用得多。记得有次周末在家加班,通过LocalAI的"离线语音转写"

【SpringAI Alibaba】快速搭建带对话记忆与历史追溯的 智能客服聊天机器人

【SpringAI Alibaba】快速搭建带对话记忆与历史追溯的 智能客服聊天机器人

🔥个人主页: 中草药  🔥专栏:【Java】登神长阶 史诗般的Java成神之路 Spring AI Alibaba Spring AI Alibaba 官网_快速构建 JAVA AI 应用 Spring AI Alibaba 是阿里巴巴集团在人工智能领域推出的重要技术框架,它将 Spring 生态的工程化优势与阿里云的大模型能力深度结合,为 Java 开发者提供了一站式的 AI 应用开发解决方案。同时Spring AI Alibaba能够很好的对接阿里云的其他服务,天然生态整合 快速上手 阿里云百炼的模型服务 大模型服务平台百炼控制台         阿里云百炼是阿里云推出的企业级大模型服务平台,旨在为开发者和企业提供从模型调用、应用构建到生产部署的全链路解决方案,类似于前文提到的硅基流动,同样有免费额度。 pom <dependencies> <dependency> <groupId&