前端传给后端的数据,mysql需要存储包含多个列表的大json,奈何老大给的框架写的太死,想了n多办法才实现,还不是最优结果,以下几种思路
- model部分设置三个表A总表(前端传过来,包含BC)、B表需要存储在数据库里的(无列表)、C表所有列表数据(用于转换),完全分开处理,易懂,注意一开始要想好架构,要不基本的传列表都费劲
//model部分
type ServiceInfo struct {
//B表
//global.GV_MODEL
ID uint `gorm:"primarykey"` // 主键ID
ServiceName string `gorm:"unique;not null;size:20"`
Multi string //全部人员,用于存储列表string
}
type ServiceAll struct {
//A表
ServiceInfo
ServiceMulti *Multi `gorm:"foreignKey:ServiceInfoName"`//注意设置外键
}
type Multi struct {
//C表,注意设置主键
ServiceInfoName string `gorm:"primarykey"`
PmMulti []string `gorm:"type:text"`
RdMulti []string `gorm:"type:text"`
}
//实现部分service.go,创建表+查询表
func CreateService(s model.ServiceAll) (err error) {
serviceMulti, err := json.Marshal(s.ServiceMulti)//列表集合序列化struct->[]byte
s.Multi = string(serviceMulti)//[]byte->string存储
serviceInfo := s.ServiceI