js环境/electron环境,使用typeorm+sqlite数据库

news/2025/3/4 21:58:50/

大家有任何想法,都可以联系博主沟通。

本系列为实战文章,最终实现的桌面工具软件,获取方式:百度网盘地址:https://pan.baidu.com/s/1yrl0jYpti7QCn8CHBRT2lw?pwd=1234


正文开始

  • 前言
  • 一、引读
  • 二、哪些人可以参考本文
  • 三、使用步骤
  • 四、使用typeOrm操作数据库
    • 4.1保存和修改数据
    • 4.2删除数据
    • 4.3查询数据
  • 五、总结


前言

最近桌面软件需要管理的数据增多,将数据保存在缓存或者本地json文件的方式,已经不能满足频繁的数据存取操作,所以需要寻找本地数据持久化的方案。


一、引读

阅读本文的同学,可能对数据库了解不多,所以这里先简单阐述下数据库,帮助大家更好理解数据库

首先要理解数据库的本质,是一个文件,文件里存储数据,每次需要操作数据,就操作文件里的数据,完成增删改查,从而实现持久化存储的能力。(都存本地文件了,当然持久)

从存储功能维度来看,数据库的数据文件和我们手动创建txt、json、js来保存数据,并没有什么本质区别。

那我们为什么要选择数据库呢?

因为数据库还提供了软件功能,软件部分负责操作数据库数据文件,从而实现快速、高并发、安全、一致、可拓展、可版本管理地操作数据。数据库提供了如此多强大的功能,肯定不能简单通过鼠标点点点就全部实现,所以它提供了一系列的api,来管理数据。

虽然数据库提供了一系列强大的api,能够协助我们完成所有的数据库运维工作,但是愿意记那么多api去一点点敲命令,除了特殊环境下不得不这样做的情况,可能也只有装x犯能忍受。所以我们还需要一个便捷的可视化操作工具,例如navicat。

了解了数据库的基本情况,我们就可以很容易选择最适合我们的数据库。我的数据库要集成到electron中,运行到每一个PC机而不是服务器,关系与非关系型都可以,功能不需要太复杂,综合考虑,最合适的就是精简轻量的数据库——sqlite。

二、哪些人可以参考本文

如果读者使用的是midwayjs、nestjs等成熟后端框架,那么可能有更便捷的插件方式,将typeorm+sqlite数据库应用于项目,这种情况,一定不要被本文误导,你需要的是去官网寻找方案。

如果读者的开发语言是ts,会有更强大的装饰器语法,更方便的初始化sqlite,更简单地使用orm,不需要完全参考本文,不过本文部分内容可以为你提供思路。

如果读者的开发语言是js,那么完全可以通过本文,完成typeorm+sqlite初始化的所有工作。

三、使用步骤

  1. 下载sqlite。
npm install sqlite3 --save
  1. 下载typeorm
npm install typeorm --save

orm可选有很多,选一个自己熟悉的即可。

  1. 实例化orm。创建一个文件sqliteInit.js,用来统一管理数据库初始化的配置。
const typeorm = require('typeorm')
const path = require('path')
const glob = require('glob');const database = path.join(process.env.Electron, 'data', 'sqlite', 'database.sqlite')
// 动态获取实体路径
const entities = glob.sync(process.env.Electron+'data/sqlite/entry/*.js')

http://www.ppmy.cn/news/1576655.html

相关文章

LeetCode 88 - 合并两个有序数组

LeetCode 88 - 合并两个有序数组 是非常基础的数组操作题目,考察双指针、逆序操作和空间优化等技巧。这个问题相当经典,对后续的归并排序、多指针问题、双数组相关问题都有指导意义。以下是详细的解法、模板与变体问题讲解。 题目描述 给定你两个有序整…

[IP] DDR_FIFO(DDR3 用户FIFO接口)

IP(DDR_FIFO)将DDR3 IP的用户侧复杂接口修改为简易的FIFO接口,用户侧更加简易例化使用MIG 核 IP介绍 c0_xx (连接DDR app接口) 此IP 仅需根据MIG配置进行有限修改,即可使用! 关于IP详细使用说明,参考IP datasheet! 示…

c++ Ranges Library使用笔记(简单说明)

c Ranges Library使用笔记(简单说明) 1. 数值适配器(Range Adapters)常用数值适配器示例代码 2. 生成器(Generators)常用生成器示例代码 3. 组合使用示例示例代码 总结数值适配器(Range Adapter…

汽车轮胎损伤缺陷分割数据集labelme格式1957张3类别

数据集格式:labelme格式(不包含mask文件,仅仅包含jpg图片和对应的json文件) 图片数量(jpg文件个数):1957 标注数量(json文件个数):1957 标注类别数:3 标注类别名称:["cut","indentation",&quo…

NO.22十六届蓝桥杯备战|一维数组|七道练习|冒泡排序(C++)

B2093 查找特定的值 - 洛谷 题⽬要求下标是从0开始的,和数组的下标是吻合的,存放数据应该从下标0开始n的取值范围是1~10000数组中存放的值的绝对值不超10000,说明int类型就⾜够了找到了输出下标,找不到要输出-1,这⼀点…

Java面试第八山!《Spring框架》

一、Spring框架概述 Spring是Java企业级应用开发的核心框架,通过控制反转(IoC)和 面向切面编程(AOP)实现模块解耦,简化开发流程。其核心优势包括依赖注入、声明式事务管理、集成主流ORM框架(如…

初阶数据结构(C语言实现)——3顺序表和链表(1)

目录 【本节目标】1. 线性表2.顺序表2.1概念及结构2.2 接口实现2.2.0 动态顺序表2.2.1 顺序表初始化SLInit()2.2.2 销毁和打印2.2.3 尾插SLPushBack()2.2.4 尾删SLPopBack()2.2.5 头插2.2.6 头删2.2.7 插入…

Spring学习笔记03——Spring Boot的文件结构

Spring boot常见的文件结构: src/ ├── main/ │ ├── java/ │ │ └── com.example.demo/ │ │ ├── DemoApplication.java # 主入口 │ │ ├── config/ # 配置类 │ │ ├── controller/ …