为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
UYOU 2022-11-08 15:50:43
在 UI 中,您可以在下拉列表中选择不同的选项,这些选项与不同数据库中保存的数据相关。我已经为数据创建了模型,并且由于数据库之间的表模式是相同的,我想根据用户选择的选项在数据库之间简单地切换。这在 GORM 2.0 中如何实现?我宁愿避免在查询中指定“database.tableName”,因为我经常使用db.Model(&model).Where...图案。我想出了一种方法,但我很想看看在 gorm.DB 对象中是否有一种处理方法(或者更优雅!)。当前解决方案:在存储库中,在执行任何数据库操作之前,请使用以下内容:r.db.Exec("use " + utils.GetDB())并使用 API 中间件获取对下拉列表的任何更改并设置与所需数据库相关的全局变量。提前谢谢了。
查看完整描述

1 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

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


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{})

然后在需要时有一个函数来返回所需的数据库名称,返回您希望使用的实例。


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


查看完整回答
反对 回复 2022-11-08
  • 1 回答
  • 0 关注
  • 263 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信