Я пишу свой первый API, так что терпите меня. Я использую Go, Postgres и GORM и множество других вещей, которые я до сих пор собираю, но столкнулся с проблемой AutoMigrate GORM.
Изначально моя структура пользователя выглядела так:
type User struct {
gorm.Model
Email string `gorm:"unique" json:"email"`
Password string `json:"password"`
}
И когда я запустил db.AutoMigrate(&User{})
Он автоматически сгенерировал поле id в моей таблице User (вместе с несколькими полями даты), которое я хотел. Я зациклен на выяснении, как ссылаться на эти поля в моем приложении. Я изменил свою структуру User так, чтобы она теперь выглядела так:
type User struct {
gorm.Model
ID int `gorm:"primary_key" json:"id"`
Email string `gorm:"unique" json:"email"`
Password string `json:"password"`
}
Но вместо того, чтобы связать два поля идентификатора, когда я получаю доступ к сохраненному объекту пользователя, как показано:
user := model.User{}
if err := db.First(&user, model.User{Email: email}).Error; err != nil {
respondError(w, http.StatusNotFound, err.Error())
return nil
}
теперь есть два разных поля, автоматически сгенерированное и мое:
{
"ID": 2,
"CreatedAt": "2018-04-28T21:14:20.828547-04:00",
"UpdatedAt": "2018-04-28T21:14:20.828547-04:00",
"DeletedAt": null,
"id": 0,
"email": "joeynelson@gmail.com",
"password": <hash>
}
Я понимаю, что ответ, вероятно, прямо перед моим лицом, должен быть способ ссылки на эти автоматически сгенерированные поля, верно?