【发布时间】:2021-03-28 05:39:04
【问题描述】:
我有一个模型结构
type Customer struct {
gorm.Model
Person `gorm:"-" json:"person"`
Contact `gorm:"-" json:"contact"`
Address `gorm:"-" json:"address"`
}
func (p Customer) Validate() error {
return validation.ValidateStruct(&p,
validation.Field(&p.Person),
validation.Field(&p.Contact),
validation.Field(&p.Address),
)
}
我希望客户有联系数据,所以我有一个联系结构。但是每当我尝试运行服务器时
type Contact struct {
Tel string `json:"tel"`
Mail string `json:"mail"`
URL string `json:"url"`
}
func (c Contact) Validate() error {
return validation.ValidateStruct(&c,
validation.Field(&c.Tel, validation.Required, is.Digit),
validation.Field(&c.Mail, validation.Required, is.Email),
validation.Field(&c.URL, is.URL),
)
}
我明白了
model.Customer's field Contact, need to define a foreign key for relations or it need to implement the Valuer/Scanner interface
但我不希望它出现在它自己的单独桌子上。那么我该如何防止呢?我尝试使用
`gorm:"-"`
但如果我随后将记录读取为 json,则所有值都是空的
"contact": {
"tel": "",
"mail": "",
"url": ""
},
所以我的问题是,如果我不想将扫描仪和估值器或外键放在它自己的单独表上,为什么我需要它?
【问题讨论】:
-
您是否尝试过同时添加 gorm 和 json 标签?
gorm:"-" json:"tel" -
是的,将其添加到客户的联系人字段似乎可以消除错误,但是当我阅读记录时,所有联系人字段仍然是空字符串。我也尝试将其添加到联系人中的字段中,但似乎不起作用
-
为了清楚起见,
Tel、Mail和URL是customers表的一部分,但您希望将它们加载到 @987654332 的Contact属性中@struct,以及来自customers表的其他数据?