在Go

时间:2018-04-29 01:28:53

标签: go go-gorm

我正在编写我的第一个API,所以请耐心等待。我正在使用Go,Postgres和GORM以及其他一些我还在接受的东西,但是我遇到了GORM的AutoMigrate问题。

最初我的User结构看起来像这样:

type User struct {
    gorm.Model
    Email    string `gorm:"unique" json:"email"`
    Password string `json:"password"`
}

当我运行db.AutoMigrate(&User{})时,它在我的User表中自动生成了一个id字段(以及几个日期字段),这是我想要的。我所依赖的是如何在我的应用程序中引用这些字段。我修改了我的User结构,现在看起来像这样:

type User struct {
    gorm.Model
    ID       int    `gorm:"primary_key" json:"id"`
    Email    string `gorm:"unique" json:"email"`
    Password string `json:"password"`
}

但是,当我按如下所示访问存储的用户对象时,不是链接两个id字段:

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>
}

我意识到答案可能就在我面前,必须有一种方法可以引用这些自动生成的字段,对吗?

1 个答案:

答案 0 :(得分:2)

gorm.Model是一个包含一些基本字段的结构,其中包括字段IDCreatedAtUpdatedAtDeletedAt

参考:http://gorm.io/docs/conventions.html#gorm-Model