我在我的项目中使用GORM,我想创建类似DB管理页面的东西 .
要加载记录,我发送带有参数的GET:
category: "name", // database table name
在服务器上我有下一个代码:
func LoadItems(db *gorm.DB, category string) interface{} {
var items interface{}
loadItems := func(i interface{}) {
err := db.Find(i).Error
if err != nil {
panic(err)
}
items = i
}
switch category {
case "groups":
var records []*models.Groups
loadItems(&records)
case "departments":
var records []*models.Departments
loadItems(&records)
case .....
........
}
return items
}
是否有可能替换 switch
因为我有10个表并且在记录编辑之后我将新数据发送到服务器,在那里我被迫在其他函数中使用 switch
来保存它 .
1 回答
我不熟悉gorm,但是:可能在 Map 中存储“部门”(作为键)和相应模型类型的变量,然后通过键引用模型 . 如果还没有,那么模型必须实现一个通用接口,以便能够将它们存储在一个 Map 中 . 但是,如果这是一个更好的解决方案,我不确定 . 可能更容易维护,因为只需要将新模型类型添加到 Map 中,您就不必在代码中的多个位置调整开关 .
另一个显而易见的方法是,将开关外包给一个函数,返回一个公共接口类型的变量,并在代码中的不同位置使用它 . 这肯定不会更快,但更容易维护 .