GORM中Hook(对象生命周期)应用:使用UUID作为数据库主键
定义数据库模型结构体
type Article struct {
ID uuid.UUID `json:"id" gorm:"type:char(36);primary_key"`
}
在创建数据库结构体实例是调用钩子:BeforeCreate
//钩子:在文章被创建之前,通过UUID生成文章的ID
func (u *Article) BeforeCreate(tx *gorm.DB) (err error) {
u.ID = uuid.NewV4()
return
}
调用:
// 创建article
//var createuuid=uuid.NewV4()
article := model.Article{
//ID: createuuid,
UserId: user.(model.User).ID, //用户的ID
CategoryId: requestArticle.CategoryId, //传入的文章分类ID
Title: requestArticle.Title,//传入的文章标题
HeadImg: requestArticle.HeadImg,//传入文章的图片
Content: requestArticle.Content,//传入文章的内容
}
// 插入数据
if err := common.DB.Create(&article).Error; err != nil {
c.JSON(400, gin.H{
"data": gin.H{
"err":err,
},
"meta": gin.H{
"msg": "数据写入数据库失败",
"code": 400,
}})
return
}