Appearance
数据源
数据源模块提供了多数据源管理和切换的功能,支持在运行时动态切换不同的数据库连接。
配置数据源
在配置文件中定义多个数据源:
javascript
// config.json
{
"datasource": {
"mysql": {
"driver": "mysql",
"host": "localhost",
"port": 3306,
"database": "myapp",
"username": "root",
"password": "******",
"charset": "utf8mb4",
"pool": {
"max": 10,
"min": 1,
"idle": 10000
}
},
"postgres": {
"driver": "postgres",
"host": "localhost",
"port": 5432,
"database": "myapp",
"username": "postgres",
"password": "******",
"ssl": false
}
}
}
切换数据源
在代码中动态切换数据源:
javascript
// 切换到MySQL数据源
db.DB("mysql")
// 切换到PostgreSQL数据源
db.DB("postgres")
// 在事务中使用指定数据源
db.DB("mysql").Trans(async (db) => {
const result = await db.Select("SELECT * FROM users")
return result
})
多数据源操作
同时操作多个数据源:
javascript
// 从MySQL读取数据
const users = await db.DB("mysql").Select("SELECT * FROM users")
// 写入到PostgreSQL
await db.DB("postgres").Insert("users", users)
// 跨数据源事务(注意:不同数据源之间不支持事务一致性)
const sourceData = await db.DB("mysql").Select("SELECT * FROM source_table")
await db.DB("postgres").Insert("target_table", sourceData)
最佳实践
- 使用配置文件管理数据源连接信息
- 数据库密码等敏感信息通过环境变量注入
- 合理配置连接池参数,避免连接资源浪费
- 注意不同数据源之间的数据类型兼容性
- 在应用启动时验证所有数据源连接