基于IndexedDB数据存储方案自建Mock体系

97 阅读1分钟

前言

IndexedDB是一种底层 API,用于在客户端存储大量的结构化数据(也包括文件/二进制大型对象(blobs))。该 API 使用索引实现对数据的高性能搜索。IndexedDB 是一个事务型数据库系统,也是一个基于 JavaScript 的面向对象数据库,它提供了类似数据库风格的数据储存和使用方式,我们只需要指定数据库模式,打开与数据库的连接,然后检索和更新一系列事务。

基本概念

基于以上,这篇文章将学习 IndexedDB 一些基本的概念和 API,大致包括:

  • 数据库:存储数据的地方,每个域名可以创建多个数据库
  • 对象仓库:也就是 objectStore,每个数据库包含若干个对象仓库
  • 索引:可以为对象仓库中的属性创建对应的索引,并且根据索引来查询数据,一般索引和索引属性一致
  • 事务:数据库里的增删改查操作都是通过事务(transaction)来完成
  • 数据记录:每一条数据都是一条记录,有对应的 key、value、主键、索引等属性

基本步骤

  • 创建数据库连接
  • 创建 objectStore
  • 创建一些索引
  • 通过事务来进行数据库操作

示例

如下图所示,localhost:3000 本地域名下有一个名为 airbnb 的数据库,当前版本号是 2,当期有一个存储对象 elephant,改存储对象包含两个索引 nose、ear image.png 如下图所示,存储对象 elephant 的主键(keypath)为 idelephant 中存在两条数据,分别为 id13 的数据,数据是以对象的形式存储。 image.png