基于Electron-Vue3-Express的数据同步功能的实现
Electron + Vue3 + Express 实现本地数据同步到服务器
#tech / dev / desktop
#resource / electron
#type / howto
#status / growing
[!info] related notes
- 所属 MOC: Electron MOC
- 相关概念: electron-project-data-storage, dailyuse中数据同步的实现分析, powersync
基于
- 简单的用户登录、注册功能
- 将使用功能模块生成的对应 settings等数据以 json 格式保存在本地系统文件夹中
客户端进行操作,会修改本地相应的文件
使用一个观察者来观察修改本地文件的操作,有修改操作则说明数据更新了;此时,观察者通知同步服务
同步服务调用 API 将修改的文件上传至服务器数据库
Express
生成存储数据的表
// 创建数据同步表
await connection.query(`
CREATE TABLE IF NOT EXISTS user_data (
id INT PRIMARY KEY AUTO_INCREMENT,
user_id INT NOT NULL,
FOREIGN KEY (user_id) REFERENCES users(id),
file_name VARCHAR(255) NOT NULL CHECK (file_name != ''),
file_content JSON,
version INT NOT NULL DEFAULT 1,
last_modified TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
UNIQUE (user_id, file_name),
INDEX idx_user_id (user_id),
INDEX idx_last_modified (last_modified)
)
`);
编写 API
期望暴露 同步接口
获取相应数据的 修改
Vue3
Express
后端