Написал некоторый код чтобы записывать/читать массивы в postgres. Проблема оказалась в том, что функция Scan не подходит для того чтобы читать массив и по итогу выдает такую ошибку
sql: Scan error on column index 5, name "liked_tracks": unsupported Scan, storing driver.Value type string into type *[]models.Track
Сам пример кода:
type User struct {
Id int64 `json:"id" gorm:"primary_key"`
Name string `json:"username" gorm:"type:varchar(25);unique;not null"`
Password string `json:"password" gorm:"not null"`
ImagePath string `json:"image_path"`
Friends []int64 `json:"friends" gorm:"type:integer[]"`
Liked_tracks []Track `json:"liked_tracks" gorm:"type:json[]"`
Liked_playlists []int64 `json:"liked_playlists" gorm:"type:integer[]"`
}
type Track struct {
Id int64 `json:"id" gorm:"primary_key"`
Name string `json:"name" gorm:"type:varchar(50);not null"`
Author string `json:"author" gorm:"type:varchar(50);not null"`
TrackPath string `json:"track_path" gorm:"not null"`
ImagePath string `json:"image_path"`
}
func (t Track) Value() (driver.Value, error) {
return json.Marshal(t)
}
func (t *Track) Scan(value interface{}) error {
b, ok := value.([]byte)
if !ok {
return errors.New("type assertion to []byte failed")
}
return json.Unmarshal(b, &t)
}
С подобным сталкиваюсь впервые и не знаю как реализовать функцию по другому.