GORM - Golang 在运行时更改数据库

GORM - Golang Change Database at Runtime

在 UI 中,您可以 select 下拉列表中的不同选项,这些选项与不同数据库中保存的数据相关。我已经为数据创建了模型,并且由于 table 模式在 DB 之间是相同的,我想根据用户具有的选项 selected.[=12 在 DB 之间简单地切换=]

如何在 GORM 2.0 中实现这一点?我宁愿避免在查询中指定“database.tableName”,因为我经常使用

db.Model(&model).Where...

模式。

我已经想出了一个方法,但我很想看看 gorm.DB 对象中是否有处理这个问题的方法(或者更优雅!)。

当前解决方案:

在存储库中,在执行任何数据库操作之前使用以下命令:

r.db.Exec("use " + utils.GetDB())

并使用 API 中间件获取对下拉列表的任何更改,并设置与所需数据库相关的全局变量。

非常感谢。

在没有其他答案的情况下,这里有一个 指南 我决定使用的解决方案:

var db map[string]*gorm.DB

db = make(map[string]*gorm.DB)
db["db1"], err = gorm.Open(mysql.Open(config.DbURL()), &gorm.Config{})
db["db2"], err = gorm.Open(mysql.Open(config.DbURL()), &gorm.Config{})
db["db3"], err = gorm.Open(mysql.Open(config.DbURL()), &gorm.Config{})

然后在需要时具有 return 所需数据库名称的功能,returning 您希望使用的实例。

db[dbname].Table("table1").Select....