猿问

如何存储来自 DTO Gorm 的数据

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


type User struct {

    gorm.Model

    Name string

    Address string

    Phone string

}

这是我的 DTO


type PostDto struct {

    Name string `json:"name"`

    Address string `json:"address"`

    Phone string `json:"phone"`

}

我正在尝试存储如下数据


var postDto models.PostDto

c.BodyParser(&postDto)

err := database.DB.Model(models.User{}).Create(&postDto).Error

fmt.Println(err.Error())

但我收到以下错误


panic: reflect: call of reflect.Value.Field on string Value

任何人都可以帮助解决这个问题吗?


撒科打诨
浏览 102回答 2
2回答

长风秋雁

我不知道你在做什么?这是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 Usererr := database.DB.Model(User{}).Create(&user).Errorfmt.Println(err.Error())

回首忆惘然

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并使用它而不是PostDtotype User struct {    gorm.Model `json:"-"`    Name       string `json:"name"`    Address    string `json:"address"`    Phone      string `json:"phone"`}var postData models.Userc.BodyParser(&postData)
随时随地看视频慕课网APP

相关分类

Go
我要回答