xorm
xorm copied to clipboard
[null] 自定义类型为nil时,没有忽略掉该字段
背景
当类型中的某个字段实现了core.Conversion接口,但是值为nil时,还是调用了ToDB()
期望
为nil时,应该忽略掉该字段,使用数据库默认的值,例如NULL等
示例
Addr 为json 类型
type Person struct {
Addr *Addr
}
type Addr struct {
Street string
}
func (r *Addr) FromDB(d []byte) error {
return json.Unmarshal(d, r)
}
func (r *Addr) ToDB() ([]byte, error) {
return json.Addr(r)
}
var p Person
session.Insert(p)
输出:
数据库中addr的字段值为 json的 "null",而不是期望的数据库中的 NULL
源代码
if fieldConvert, ok := fieldValue.Addr().Interface().(core.Conversion); ok {
// balabala
if fieldConvert, ok := fieldValue.Interface().(core.Conversion); ok {
// balabala
这里没有判断nil的处理
@Tang-RoseChild could you send a PR to fix that?
@Tang-RoseChild could you send a PR to fix that?
i'm too busy now, maybe later?
@Tang-RoseChild That's OK.