Skip to content

数据源

数据源模块提供了多数据源管理和切换的功能,支持在运行时动态切换不同的数据库连接。

配置数据源

在配置文件中定义多个数据源:

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)

最佳实践

  • 使用配置文件管理数据源连接信息
  • 数据库密码等敏感信息通过环境变量注入
  • 合理配置连接池参数,避免连接资源浪费
  • 注意不同数据源之间的数据类型兼容性
  • 在应用启动时验证所有数据源连接

版权所有.