当前位置: 首页 > 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.dtcms.com/a/273018.html

相关文章:

  • 使用快捷键迅速校准多个通道 | IPEmotion
  • 软件技术:柯里化
  • 《PyQt6-3D应用开发技术文档》
  • 仿豆包智能输入框实现
  • python基础25_某大网校(下)处理json数据以及保存题库
  • 安全访问云端内部应用:用frp的stcp功能解决SSH转发的痛点
  • Linux驱动开发(platform 设备驱动)
  • 老题新解|矩阵转置
  • AI驱动的业务系统智能化转型:从非结构化到结构化的智能转换
  • 【STM32 学习笔记】FLASH闪存
  • pytorch学习-12循环神经网络(基础篇)
  • 机器视觉之激光码检测系统
  • 【世纪龙科技】学测-汽车信息化综合实训考核平台(机电方向)
  • 数字孪生系统如何助力汽车零部件企业实现虚拟智控
  • RedisJSON 内存占用剖析与调优
  • Lua嵌入式爬虫实现步骤
  • 【Linux系统】冯诺依曼体系结构 | 初识操作系统
  • 生产者、消费者问题(C语言、POSIX)
  • 测试覆盖标准-条件覆盖-短路求值
  • 全新开源AI知识库系统!PandaWiki一键构建智能文档,支持AI问答、创作与搜索!
  • [特殊字符] 05_Jenkins 部署前端项目实现自动化部署
  • rv1106使用笔记
  • 【RL-VLM-F】算法框架图绘图学习笔记
  • ubuntu server配置静态IP
  • ​​​​​​​微软PowerBI PL-300认证考试报名入口及费用
  • 【PTA数据结构 | C语言版】顺序队列的3个操作
  • 完美卸载 Ubuntu 双系统:从规划到实施的完整指南
  • 乐鑫代理商飞睿科技,ESP32模组重塑AIoT体验的四大技术支柱
  • C++类型萃取(Type Traits):深入解析std::enable_if与std::is_same
  • git fetch的使用