Nodejs Electron 在本地存放一些数据, 大家都是怎么操作的

发布于 1周前 作者 bupafengyu 来自 nodejs/Nestjs

Nodejs Electron 在本地存放一些数据, 大家都是怎么操作的
考虑用 sqlite3, 但是如果要用到加密 在 windows 环境编译太艹蛋了(我的问题)
使用 better-sqlite3 感觉还可以
但是卡在 Sqlcipher 编译部分
大概研究了两个下午 没什么进展

就算编译没问题, 我感觉也会在打包之后遇到问题.
不知道大家怎么处理这些配置、数据的.

13 回复

真巧,这两天一直在搞 electron-vue 缓存视频 ,图片到本地、配置文件啥的。不过我的项目 没啥保密的。都是直接用 fs 创建个 .txt 保存到 userData 文件夹 ojbk。


浏览器 localstorage

直接用 IndexedDB 或者 websql 吧

用的 localstorage,少量数据的话

我之前是使用的 nedb

推荐你用原生功能。另外尽量不要杀鸡焉用牛刀, 简单数据存 localStorage, 复杂数据再考虑存 IndexedDB.
如果需要用到加密, 我习惯加密后把数据往 AppData 里存。

和楼上差不多 AppData+本地写入文件+localstorage ,具体场景具体分析

简单点可以用 nedb,不过这项目好久没维护,要求高点可以用 rxdb

其实数据很简单, 但是可能涉及到不定长度的字符 所以没考虑使用 localStorage 怕会影响显示变卡.

lowdb
可参考 PicGo 作者的

lowdb 我也是用的这个

在Node.js和Electron框架下,本地存放数据有多种操作方法,以下是一些常见方案及代码示例:

  1. 使用Electron-store模块

    Electron-store是Electron官方提供的key-value存储模块,便于存储和检索应用程序配置和数据。

    const Store = require('electron-store');
    const store = new Store();
    store.set('key', 'value'); // 设置数据
    const value = store.get('key'); // 获取数据
    
  2. 使用Node.js的fs模块

    Node.js的fs模块支持本地文件的读写操作,可以灵活存储各种数据。

    const fs = require('fs');
    const path = require('path');
    const filePath = path.join(app.getPath('userData'), 'myfile.txt');
    fs.writeFileSync(filePath, 'hello world', 'utf-8'); // 写入文件
    const data = fs.readFileSync(filePath, 'utf-8'); // 读取文件
    console.log(data);
    
  3. 使用数据库

    Electron还支持使用SQLite、MongoDB等数据库存储数据,适合需要复杂查询和关系管理的场景。

    // 示例:使用SQLite
    const sqlite3 = require('sqlite3').verbose();
    let db = new sqlite3.Database(':memory:'); // 内存数据库,实际使用时可改为文件路径
    db.serialize(() => {
      db.run("CREATE TABLE lorem (info TEXT)");
      let stmt = db.prepare("INSERT INTO lorem VALUES (?)");
      for (let i = 0; i < 10; i++) {
        stmt.run("Ipsum " + i);
      }
      stmt.finalize();
    });
    

选择哪种方法取决于具体需求,如数据量、查询复杂度等。

回到顶部