如何保存结构数组

我正在尝试保存一个结构数组。

我试过:


type ShiftValue struct {

    Hour   uint8 `json:"hour"`

    Minute uint8 `json:"minute"`

}


type Shift struct {

    Start ShiftValue `json:"start"`

    End   ShiftValue `json:"end"`

}


type Config struct {

    ID                        uuid.UUID       `gorm:"type:uuid;primary_key;index;" json:"id"`

    CreatedAt                 time.Time       `json:"created_at"`

    UpdatedAt                 time.Time       `json:"updated_at"`

    DeletedAt                 *time.Time      `json:"deleted_at,omitempty"`

    Shifts                    []Shift         `gorm:"type:varchar(100)[];" json:"shifts,"`

}

但不工作。我还尝试将 Shifts 保存为pq.StringArray:


type Config struct {

    ID                        uuid.UUID       `gorm:"type:uuid;primary_key;index;" json:"id"`

    CreatedAt                 time.Time       `json:"created_at"`

    UpdatedAt                 time.Time       `json:"updated_at"`

    DeletedAt                 *time.Time      `json:"deleted_at,omitempty"`

    Shifts                    pq.StringArray  `gorm:"type:varchar(100)[];" json:"shifts,"`

}

这是一种工作,但我不知道如何将切片转换Shift为StringArray.

我应该使用GenericArrray吗?

我怎样才能从SlicetoGenericArray或进行转换StringArray?


当我Unmarshall获取数据时,我在以下结构中执行它,我验证数据,然后我想将它保存到数据库中:


type ConfigUpdate struct {

    Shifts                    []Shift         `json:"shifts,"`

}


繁花如伊
浏览 126回答 1
1回答

幕布斯7119047

在 gorm嵌入式结构测试中可以看到的最接近的场景是package gorm_testimport "testing"type BasePost struct {    Id    int64    Title string    URL   string}type Author struct {    ID    string    Name  string    Email string}type HNPost struct {    BasePost    Author  `gorm:"embedded_prefix:user_"` // Embedded struct    Upvotes int32}type EngadgetPost struct {    BasePost BasePost `gorm:"embedded"`    Author   Author   `gorm:"embedded;embedded_prefix:author_"` // Embedded struct    ImageUrl string}可以看出,所有这些基础结构都Id必须被称为foreign父结构中的键。可以在 StackOverflow另一个答案之一中找到另一种情况。type Children struct {    Lat float64    Lng float64}type ChildArray []Childrenfunc (sla *ChildArray) Scan(src interface{}) error {    return json.Unmarshal(src.([]byte), &sla)}func (sla ChildArray) Value() (driver.Value, error) {    val, err := json.Marshal(sla)    return string(val), err}type Parent struct {    *gorm.Model        Childrens ChildArray `gorm:"column:childrens;type:longtext"`}请自行验证,因为我没有设置 gorm。我只是做了研发部分。我希望,它会帮助我们中的许多人。谢谢
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go