Electron使用Dexie操作IndexDB
Electron使用Dexie操作IndexDB
- Dexie.js 基本的使用
- 安装
- 自定义数据库模块 db.ts
- objectstore定义
- 必要数据初始化
- 插入数据
- 更新数据
- 删除数据
- 查询
Dexie.js 基本的使用
github地址
Dexie.js官网
在Vue中的使用示例
API简单使用
安装
npm install dexie
自定义数据库模块 db.ts
// db.ts
import Dexie, { Table } from 'dexie';export interface Friend {id?: number;name: string;age: number;
}export class MySubClassedDexie extends Dexie {// 'friends' is added by dexie when declaring the stores()// We just tell the typing system this is the casefriends!: Table<Friend>; constructor() {super('myDatabase');this.version(1).stores({friends: '++id, name, age' // Primary key and indexed props});}
}export const db = new MySubClassedDexie();db.open();
db.on('populate',()=>{db.friends.add({name: "Josephine", age: 21});
})
objectstore定义
语法 | 说明 |
---|---|
++ | 用于定义自增主键,字段 内容不可重复 |
& | 定义唯一索引 |
* | 定义多条目索引 |
A+B | 定义联合索引 |
必要数据初始化
db.on(‘populate’,fn) 在数据库建库时只执行一次,数据库已存在不会执行,比较适用于初始化数据库的基本数据。
插入数据
// 插入一条数据
db.friends.add({name: "Josephine", age: 21});
// 批量插入
await db.friends.bulkAdd([{name: "Foo", age: 31},{name: "Bar", age: 32}
]);
更新数据
// 更新一条数据,有id为4的数据对其进行更新,没有则插入
await db.friends.put({id: 4, name: "Foo", age: 33});
// 批量更新或插入
await db.friends.bulkPut([{id: 4, name: "Foo2", age: 34},{id: 5, name: "Bar2", age: 44}
]);
// 更新id为4的数据的名字
await db.friends.update(4, {name: "Bar"});
// 范围批量更新
await db.customers.where("age").inAnyRange([ [0, 18], [65, Infinity] ]).modify({discount: 0.5});
删除数据
// 根据id删除
await db.friends.delete(4);
// 批量删除
await db.friends.bulkDelete([1,2,4]);
const oneWeekAgo = new Date(Date.now() - 60*60*1000*24*7);
// 范围批量删除
await db.logEntries.where('timestamp').below(oneWeekAgo).delete();
查询
// 通过id查询
const friend = await db.friends.get(4)
// 条件查询
const someFriends = await db.friends.where("name").equals("Foo").toArray()
// 返回唯一结果
const firend = await db.friends.where({name: "Foo",age: 33}).first()
Electron使用Dexie操作IndexDB相关推荐
- indexDB操作库----zl-indexdb
模块名:zl-indexdb GitHub地址:https://github.com/zl-fire/zl-indexDB (欢迎start ^_^) 作用:indexDB操作库---对indexdb ...
- Electron对接语音唤醒Windows SDK
一.项目主要依赖 vue vue-cli-plugin-electron-builder electron ffi-napi nodejs操作c++的dll库 ref-napi c++类型转换 js- ...
- Electron 初探
本期 Chat,由葡萄城资深工程师 -- 刘涛,带来<Electron 初探>,届时我们将通过线上直播,讲解 Electron 入门技巧及使用场景. 讲师简介:GrapeCity Spre ...
- 【Electron】解决 npm安装出现 self-signed certificate in certificate
问题 按照Electron 官网步骤安装时 npm install electron --save-dev出现报错 error RequestError: self-signed certificat ...
- 前端本地缓存知识:indexDB、localStorage、sessionStorage
前端缓存 在实习的时候接触过一个需求是,要求用户在离线状态下也能打开客户端查看部分数据,并对数据进行操作,在联网后向服务器同步操作更新服务器的数据.因此在对前端如何实现在本地存储数据及读写进行调研,了 ...
- 前端数据库indexedDB入门
什么是indexDB 学习文档: 阮一峰老师的分享文档:浏览器数据库 IndexedDB 入门教程 - 阮一峰的网络日志 官方API文档,纯英文,不过提供的代码很有用:Indexed Database ...
- 关于大型网站技术演进的思考
关于大型网站技术演进的思考(一)--存储的瓶颈(1) 前不久公司请来了位互联网界的技术大牛跟我们做了一次大型网站架构的培训,两天12个小时信息量非常大,知识的广度和难度也非常大,培训完后我很难完整理出 ...
- Electron中实现菜单、子菜单、以及自带操作事件
场景 用HTML和CSS和JS构建跨平台桌面应用程序的开源库Electron的介绍以及搭建HelloWorld: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/a ...
- 前端 IndexDB 操作入门教程
前端 IndexDB 操作入门教程 idb-js 基于indexdb本地数据库的封装 文档地址 安装: npm install idb-js --save 使用: 第一步: 引入Idb import ...
最新文章
- php for等边三角形,利用js实现等腰三角形
- 斯坦福大学 AI100 报告发布:AI 发展速度惊人,但风险也正走进现实
- python yaml用法详解
- Element UI自定义表单验证 公共提取
- 【Kafka】Kafka集群扩展以及重新分布分区-分区重新分配
- mysql unique和key_MYSQL的primary key和unique key的区别
- 使用qq邮箱服务器来实现laravel的邮件发送
- 软件测试实训平台 文档,软件测试实训-20210322233101.docx-原创力文档
- 基于JVM原理JMM模型和CPU缓存模型深入理解Java并发编程
- 读后感 《大话数据结构》
- android.dig机器人采访,机器人学导论心得 - osc_jjc36t9p的个人空间 - OSCHINA - 中文开源技术交流社区...
- AWWWB.COM网站克隆器
- 【OpenCV + Python】时域和频域傅里叶变换
- Flink On K8S终极实现方案
- Centos7 进入单用户模式,修复系统
- 精进——如何成为很厉害的人(采铜)
- 微信公众号html在线编辑器,【微信公众平台工具开发】雷人微信网页编辑器
- 高德离线地图瓦片坐标偏移纠偏
- 自己做小程序开个社区团购可行吗?
- 《醒悟》中“TOC”在零售业是如何应用的?