GORM中Hook(对象生命周期)应用:使用UUID作为数据库主键

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
	}
posted @ 2021-11-18 21:18  成强  阅读(1710)  评论(0编辑  收藏  举报