Yolofyi's Guide
首页
  • 前端文章

    • JavaScript
    • HTML
    • CSS
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • Mysql

    • Mysql
  • Java

    • Java基础
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 助手
收藏
  • 分类
  • 标签
  • 归档

Yolofyi

船是自己,灯塔是自己,岸也是自己
首页
  • 前端文章

    • JavaScript
    • HTML
    • CSS
  • 学习笔记

    • 《JavaScript教程》
    • 《JavaScript高级程序设计》
    • 《ES6 教程》
    • 《Vue》
    • 《React》
    • 《TypeScript 从零实现 axios》
    • 《Git》
    • TypeScript
    • JS设计模式总结
  • Mysql

    • Mysql
  • Java

    • Java基础
  • 技术文档
  • GitHub技巧
  • Nodejs
  • 博客搭建
  • 学习
  • 面试
  • 助手
收藏
  • 分类
  • 标签
  • 归档
  • HTML

  • CSS

  • JavaScript文章

    • 33个非常实用的JavaScript一行代码
    • new命令原理
    • ES5面向对象
    • ES6面向对象
    • 多种数组去重性能对比
    • 跨域 ajax 请求之 jsonp 原理解析
    • dexie数据库
      • 前言
    • JS随机打乱数组
    • 判断是否为移动端浏览器
    • 将一维数组按指定长度转为二维数组
    • 防抖与节流函数
    • JS获取和修改url参数
    • 比typeof运算符更准确的类型判断
  • 学习笔记

  • Electron

  • 前端
  • JavaScript文章
yolofyi
2023-07-25
目录

dexie数据库

# 前言

随着浏览器的功能不断增强,越来越多的网站开始考虑将大量的数据存储在客户端,相比后端接口,获取数据更快一些。现有的浏览器存储方案都不适合存储大量的数据。Cookie的大小不超过4KB,而且每次请求都会发送到服务器,LocalStorage在2.5~10MB直接,浏览器不同,存储的大小还不一样,而且不提供搜索功能,也不能建立自定义索引,webSQL大家可以课外了解一下,因为Web SQL Database规范已经被废弃,官方文档也解释的很清楚,webSQL规范底层采用SQLite的SQL方言,而作为一个标准,这是不可接受的,每个浏览器都有自己的实现以后就很能统一标准了,就像IE一样。最后,也是最重要的一个客户端存储大量数据的方案:IndexedDB。

而Dexie.js 对IndexedDB的封装,语法简单,可以快速方便的编写代码

符合 描述
++ 自动递增主键
& 唯一主键
* 多值索引
+ 复合索引

创建数据库db.js



import Dexie from 'dexie';
import { demos } from './initData';

var db = new Dexie('yolofyi');

db.version(1).stores({
  demos: '++id, text, category, &url, private, decs, updateTime',
});

//升级版本更新参数
db.version(2)
  .stores({
    demos:
      '++id, text, category, &url, private, isActive, decs, updateTime'
  })
  .upgrade(trans => {
    trans.websites.toCollection().modify(demo => {
      demo.isActive = true;
    });
  });
//数据库创建时批量初始化数据
db.on('populate', () => {
  db.demos.bulkAdd(demos); 
});

db.open();
export default db;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

数据库操作demo.js

import db from './db';
const { demos } = db;
export default {
  async all() {
    return await demos.where('id').above(0).toArray();
  },
  async clear() {
    return await demos.clear();
  },
  async bulkAdd(param) {
    return await demos.bulkAdd(param);
  },
  async update(id, data) {
    data['updateTime'] = new Date().getTime();
    return await demos.update(id, data);
  },
  //param为{url:'xx'}
  async find(param) {
    return await demos.where(param).first();
  },
  async get(id) {
    return await demos.get(id);
  },
  async add(param) {
    param['updateTime'] = new Date().getTime();
    return await demos.add(param);
  },
  async remove(id) {
    return await demos.delete(id);
  },
};

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
上次更新: 2023/08/06, 22:51:57
跨域 ajax 请求之 jsonp 原理解析
JS随机打乱数组

← 跨域 ajax 请求之 jsonp 原理解析 JS随机打乱数组→

最近更新
01
MySQL开发规范及慢查询优化
08-25
02
linux增加swap交换空间
08-16
03
uni-app云打包Android Apk
08-13
更多文章>
| Copyright © 2022-2023 yolofyi.com - All rights reserved | 鄂ICP备2022003053号 |
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式