我有一个后记数据库,它将JSON存储为其字段之一。该表的结构为:
type Table struct {
ID int
VehicleType string
Vehicle Vehicle `gorm:"type:jsonb"`
// ......
}
现在,车辆是一个界面
type Vehicle interface {
GetEngineModel() string
}
它有很多实现,我将分享其中之一 - 汽车
type Car struct {
CarEngineModel string //the attributes will be different for different
//implementation
}
func (car Car) GetEngineModel() string {
return car.CarEngineModel
}
为了解析特定结构(即汽车,自行车,..)中的属性,我可以实现所有实现的扫描和值接口,如下所示:-
func (car *Car) Scan(value interface{}) error {
//Want to use this implementation of Scan based on VehicleType
//attribute of struct table
b, ok := value.([]byte)
if !ok {
return errors.New("type assertion to []byte failed")
}
*car = json.Unmarshal(b, &car)
}
有没有办法根据其他表列来判断要使用哪种扫描实现,或者使用GORM的另一种方法来做同样的事情?我只想要一个表(遗传json类型),所以不想使用不同的表来使用多态关联的不同实现。
去
戈姆
猛跑小猪
相关分类