Я пытаюсь добавить новый элемент в массив в отношении один ко многим. Проблема в том, что один из идентификаторов всегда не определен, а модель, которую я хочу добавить, не обновляется.
У меня есть следующие модели:
type Station struct {
gorm.Model
Name string
Measurements []Measurement
PlantID uint64
Plant Plant
}
type Measurement struct {
ID uint64 `gorm:"primary_key"`
StationID uint64
TempSensor float32
LightSensor float32
HumiditySensor float32
CreatedAt time.Time
}
type Plant struct {
gorm.Model
Name string
}
Это маршрут, на который я отправляю почтовый запрос:
/stations/:id/measurements
Это текущий обработчик маршрута, который у меня есть:
func CreateMeasurement(c *gin.Context) {
id := c.Params.ByName("id")
var station Station
if err := db.Where("id = ?", id).First(&station).Error; err != nil {
c.AbortWithStatus(404)
fmt.Println(err)
} else {
var measurement Measurement
c.BindJSON(&measurement)
// Convert params string to uint
convertedID, err := strconv.ParseUint(id, 10, 64)
if err != nil {
fmt.Println(err)
}
measurement.StationID = convertedID
db.Model(&station).Association("Measurements").Append(&measurement)
db.Save(&station)
c.JSON(200, station)
}
}
Вопрос : Как создать новый элемент Measurement
и добавить его к массиву []Measurement
в конкретном Station
, который указан параметрами маршрута?