electron 添加 SQLite 数据库
序
在之前,我曾经使用electron
开发过一个番茄钟应用,但是当时的应用数据存储是在 JSON 文件当中,通过 node 的 fs 文件系统进行读写的,但是感觉不用数据库总有点不太专业。
所以还是打算使用数据库来作为存储的地方,不过数据库的选择就多了,但是我找了一圈发现适合electron
打包进去的数据库可能还是SQLite
吧。
之前也打算使用mongodb
,但是必须要下载好,所以直接pass
。然后因为SQLite
是无需部署无需服务器的,直接 node 即可创建和操作,所以直接来吧
之前的文章:
https://xie.infoq.cn/article/6c7094a919d33144f50cdc6d9《vue 番茄钟 &electron 打包》
开发
因为之前已经写好了番茄钟项目,并且将数据的读写也单独分出来了,所以现在新建一个sqliteDB.js
作为操作数据库的方法文件即可。
其实这里的操作基本参考上面的《node の SQLite》即可。通过 sqlite 创建数据库表的语句先将数据库tomato.db
创建出来,然后创建表tomatoTable
。
创建表格:(sqlite 中 Boolean 属性将会被存储为 0/1)
然后之前主进程和渲染器进程之间通过ipcMain
和ipcRenderer
来获取数据,这一点同样不变,不过将数据从 JSON 文件中获取变成了从sqlite
数据库中获取。
至于获取数据库方法,因为我最初的获取数据只需要一次性的全部获取,可以使用db.all
,这样数据在回调方法中显示,可以通过promise
来返回数据,在外面通过 await 来等待接收。
然后在渲染进程中接收时可以直接接收对象了,不需要再通过JSON.parse
将字符串转换对象
因为番茄钟应用也不用一下子新增或删除多条数据,所以增删改操作也较为简单:
在番茄钟界面新增一条数据,然后可以通过 vscode 的 sqlite 插件先查看是否存在:
写到这基本就已经结束了,然后就是将番茄钟重新打包,方式和《vue 番茄钟 &electron 打包》 一样。
这里本来以为多出来一个
tomato.db
数据库会对打包有影响,导致报错什么的,结果没有任何问题。
版权声明: 本文为 InfoQ 作者【空城机】的原创文章。
原文链接:【http://xie.infoq.cn/article/fe39931d054959a2f4b4fe642】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论