You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

152 lines
3.3 KiB

# 数据同步服务
## 简介
这是一个用于将数据库中的用户数据同步到简道云表单的服务。
## 功能特性
1. **数据同步**:将数据库中的用户数据同步到简道云表单
2. **重复数据检查**:跳过简道云表单中已存在的电话号码数据
3. **增量同步**:只同步新增/未同步的数据(默认启用)
4. **全量同步**:同步所有数据
5. **自动同步**:定期自动检查并同步数据库中的新增数据
## 配置选项
### 数据库配置
`src/config/config.js` 中配置数据库连接信息:
```javascript
db: {
host: '数据库主机地址',
port: 数据库端口号,
user: '数据库用户名',
password: '数据库密码',
database: '数据库名称'
}
```
### 同步配置
`src/config/config.js` 中配置同步选项:
```javascript
sync: {
// 增量同步模式:true - 只同步新增/未同步数据,false - 同步所有数据
incremental: true,
// 同步状态字段
statusField: 'sync_status',
// 最后同步时间字段
timeField: 'last_sync_time',
// 已同步状态值
syncedValue: 1,
// 未同步状态值
unsyncedValue: 0,
// 自动同步配置
autoSync: {
// 是否启用自动同步
enabled: true,
// 同步间隔时间(单位:分钟)
interval: 5
}
}
```
### 简道云配置
`src/config/config.js` 中配置简道云API信息:
```javascript
jiandaoyun: {
appId: '简道云应用ID',
entryId: '简道云表单ID',
apiKey: '简道云API密钥'
}
```
### 字段映射
`src/config/config.js` 中配置数据库字段与简道云表单字段的映射关系:
```javascript
fieldMapping: {
'userId': '简道云字段ID',
'company': '简道云字段ID',
'name': '简道云字段ID',
'phoneNumber': '简道云字段ID',
'type': '简道云字段ID',
'city': '简道云字段ID'
// 其他字段映射...
}
```
## 使用方法
### 安装依赖
```bash
npm install
```
### 运行服务
#### 启动自动同步服务
```bash
node index.js
```
这将启动自动同步服务,每隔5分钟(可在配置中修改)自动检查并同步数据库中的新增数据。
#### 执行一次全量同步
```bash
node index.js --full-sync
```
这将执行一次全量同步,同步数据库中的所有数据到简道云表单。
#### 执行一次增量同步
```bash
node index.js --incremental-sync
```
这将执行一次增量同步,只同步数据库中未同步的数据到简道云表单。
#### 测试数据库连接
```bash
node index.js --test-db
```
这将测试数据库连接是否正常。
#### 测试简道云API连接
```bash
node index.js --test-jiandao
```
这将测试简道云API连接是否正常。
#### 测试所有连接
```bash
node index.js --test-all
```
这将测试数据库连接和简道云API连接是否正常。
## 注意事项
1. 确保数据库中的用户表包含 `sync_status``last_sync_time` 字段,用于标记同步状态和最后同步时间
2. 确保简道云表单中已创建对应的字段,并在配置文件中正确配置字段映射关系
3. 自动同步服务需要保持运行状态才能定期执行同步
4. 重复的电话号码数据会被跳过,不会重复写入简道云表单
## 终止服务
要终止自动同步服务,可以在终端中按 `Ctrl + C` 键。