如何存储来自 DTO Gorm 的数据

az *_*rnd 1 go fibers go-gorm

我正在使用 golang 纤维和 GORM。我正在尝试存储来自 DTO 的数据。例如,我创建了一个帖子实体和帖子 dto,如下所示。

type User struct {
    gorm.Model
    Name string
    Address string
    Phone string
}
Run Code Online (Sandbox Code Playgroud)

这是我的 DTO

type PostDto struct {
    Name string `json:"name"`
    Address string `json:"address"`
    Phone string `json:"phone"`
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试存储如下数据

var postDto models.PostDto
c.BodyParser(&postDto)
err := database.DB.Model(models.User{}).Create(&postDto).Error
fmt.Println(err.Error())
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

panic: reflect: call of reflect.Value.Field on string Value
Run Code Online (Sandbox Code Playgroud)

有人可以帮助解决这个问题吗?

提前致谢

小智 5

我不知道你在做什么?这是go语言,不是java,为什么定义两个结构体?

您可以使用标签来完成您想要的。

type User struct {
    gorm.Model `json:"-" gorm:"-"`
    Name string `json:"name" gorm:"column:name"`
    Address string `json:"address" gorm:"column:address"`
    Phone string `json:"phone"  gorm:"column:phone"`
}


var user User
err := database.DB.Model(User{}).Create(&user).Error
fmt.Println(err.Error())
Run Code Online (Sandbox Code Playgroud)