猿问

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

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

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

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

图案。

我想出了一种方法,但我很想看看在 gorm.DB 对象中是否有一种处理方法(或者更优雅!)。

当前解决方案:

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

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

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

提前谢谢了。


UYOU
浏览 319回答 1
1回答

慕容3067478

在没有其他答案的情况下,这是我决定使用的解决方案的指南:var db map[string]*gorm.DBdb = 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{})然后在需要时有一个函数来返回所需的数据库名称,返回您希望使用的实例。db[dbname].Table("table1").Select....
随时随地看视频慕课网APP

相关分类

Go
我要回答