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....
在 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....