为了账号安全,请及时绑定邮箱和手机立即绑定

如何存储来自 DTO Gorm 的数据

如何存储来自 DTO Gorm 的数据

Go
撒科打诨 2023-02-06 14:45:47
我正在使用 golang 纤维和 GORM。我正在尝试存储来自 DTO 的数据。例如,我创建了一个 post 实体和 post dto,如下所示。type User struct {    gorm.Model    Name string    Address string    Phone string}这是我的 DTOtype PostDto struct {    Name string `json:"name"`    Address string `json:"address"`    Phone string `json:"phone"`}我正在尝试存储如下数据var postDto models.PostDtoc.BodyParser(&postDto)err := database.DB.Model(models.User{}).Create(&postDto).Errorfmt.Println(err.Error())但我收到以下错误panic: reflect: call of reflect.Value.Field on string Value任何人都可以帮助解决这个问题吗?
查看完整描述

2 回答

?
长风秋雁

TA贡献1757条经验 获得超7个赞

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


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


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())


查看完整回答
反对 回复 2023-02-06
?
回首忆惘然

TA贡献1847条经验 获得超11个赞

User 和 PostDto 结构不一样,使用一个模型从另一个模型获取和保存数据是错误的。


创建一个从 PostDto 转换为 User 的函数,然后在 Create 中使用它的输出


func (postDTo PostDTo) ToUser() *User {

    return &User{Name: postDTo.Name, Address: postDTo.Address, Phone: postDTo.Phone}

}

或者,因为User和PostDto结构非常相似,将 json ignore 添加到gorm.ModelinUser并使用它而不是PostDto


type User struct {

    gorm.Model `json:"-"`

    Name       string `json:"name"`

    Address    string `json:"address"`

    Phone      string `json:"phone"`

}



var postData models.User

c.BodyParser(&postData)


查看完整回答
反对 回复 2023-02-06
  • 2 回答
  • 0 关注
  • 101 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信