如何在 gorm 中使用自定义预加载

How do I use custom preload in gorm

我有这两个结构

type User struct {
  gorm.Model
  Name      string
  CompanyID int
  Company   Company
}

type Company struct {
  gorm.Model
  Name string
  Adress string
}

我想获取用户并预加载他们的公司,但我不想获取地址字段我尝试了如下自定义预加载,并在邮递员中对其进行了测试。查询返回了所有字段,但对于地址,我得到一个空字符串,发生这种情况的原因是,当将结果存储在用户结构中时,golang 会自动初始化所​​有字段,并且字段地址会返回其初始值,即空刺

var user []User
     db.Table("users").Preload("Company",func(db *gorm.DB) *gorm.DB {
        return db.Select("ID" ,"Name")
    }).Find(&user)

只有name和id没有地址怎么办

如果您的服务器将结果导出为 json,您可以像这样添加 json 标记 omitempty:

type Company struct {
    gorm.Model
    Name string
    Adress string `json:"omitempty"`
}

这样,如果地址字段为空字符串,将不会被包括在内。