当前位置: 首页 > news >正文

dexie 前端数据库封装

import Dexie from "dexie";/**** @param dbName 数据库名称* @param storeName 对象存储区域* @param keyPath 主键* @param indexConfig 索引配置* @returns {Dexie}*/
export function createDB(dbName, storeName, keyPath, indexConfig) {const db = new Dexie(dbName)// 定义对象存储区域db.version(1).stores({[storeName]: keyPath})// 添加索引或其他配置if (indexConfig) {Object.keys(indexConfig).forEach(indexName => {const indexProperties = indexConfig[indexName];db[storeName].createIndex(indexName, indexProperties.keyPath, {unique: indexProperties.unique});})}return db
}/*** 添加数据* @param db 数据库实例* @param storeName 对象存储区域* @param data 添加的数据*/
export function addData(db, storeName, data) {db.open().then(() => {db.transaction('rw', db[storeName], async () => {await db[storeName].add(data);}).then(() => {console.log('Data added successfully.');}).catch(error => {console.error('Error adding data:', error)})}).catch(error => {console.error('Error opening database:', error)})
}/*** 获取数据* @param db 数据库* @param storeName 对象存储区对象* @param keyValue 主键值*/
export function getData(db, storeName, keyValue) {return new Promise((resolve, reject) => {db.open().then(() => {db.transaction('rw', db[storeName], async () => {const matched = await db[storeName].get(keyValue)resolve(matched)}).catch(error => {console.error('Error getting data:', error)})}).catch(error => {console.error('Error opening database:', error)})})
}/*** 更新数据* @param db 数据库* @param storeName 对象存储区对象* @param keyValue 主键值* @param data 更新值*/
export function updateData(db, storeName, keyValue, data) {db.open().then(() => {db[storeName].get(keyValue).then(matched => {if (matched) {db.transaction('rw', db[storeName], async () => {await db[storeName].update(keyValue, data)}).then(() => {console.log('Data updated successfully.');}).catch(error => {console.error('Error updating data:', error)})} else {addData(db, storeName, data)}}).catch(error => {console.error('Error getting data:', error)})}).catch(error => {console.error('Error opening database:', error)})
}/*** 删除数据* @param db* @param storeName* @param keyValue*/
export function deleteData(db, storeName, keyValue) {db.open().then(() => {db.transaction('rw', db[storeName], async () => {await db[storeName].delete(keyValue)}).then(() => {console.log('Data deleted successfully.');}).catch(error => {console.error('Error deleting data:', error)})}).catch(error => {console.error('Error opening database:', error)})
}/*** 删除数据库* @param dbName*/
export function deleteDb(dbName) {Dexie.exists(dbName).then(exists => {// console.log(exists)if (exists) {Dexie.delete(dbName).then(() => {console.log('Database deleted successfully.')}).catch(error => {console.error('Error deleting database', error)})} else {console.log(`Database 【${dbName}】 not exist.`)}}).catch(error => {console.error('Error checking database', error)})
}
http://www.lryc.cn/news/584549.html

相关文章:

  • 【前端】jQuery数组合并去重方法总结
  • MinerU2将PDF转成md文件,并分拣图片
  • uniapp滚动组件, HuimayunScroll:高性能移动端滚动组件的设计与实现
  • 【Fargo】发送一个rtp包的过程1:怎么统一加twcc序号
  • 创始人IP如何进阶?三次关键突破实现高效转化
  • 使用SpringAOP自定义权限控制注解
  • 音频 SDP 文件格式
  • ElementUI:高效优雅的Vue.js组件库
  • Linux epoll简介与C++TCP服务器代码示例
  • Rust中Option和Result详解
  • Rust Web 全栈开发(四):构建 REST API
  • 单片机基础(STM32-DAY2(GPIO))
  • Apache Shiro 框架详解
  • 缺乏日常项目进度例会机制,如何系统推进
  • python的第三方库(五分钟小白从入门到精通)
  • 什么是 领域偏好学习(DPO)与多目标强化学习(PPO)
  • 抽象类基础知识
  • 5. isaac sim4.2 教程-Core API-操作机械臂
  • 大模型之Langchain篇——基础操作
  • 编写DockerFile文件
  • Dart 语言知识点总结
  • C++编程学习阶段性总结
  • python-字符串
  • 钉钉拿飞书当靶
  • 服务器内核级故障排查
  • 深入理解区块链 | 去中心化架构与密码学保障
  • Redisson 的分布式锁
  • (一)OpenCV——噪声去除(降噪)
  • 职坐标:嵌入式AI边缘计算实战
  • [5种方法] 如何将iPhone短信保存到电脑