记录一次使用validate,并将验证错误结果返回给前端
1.数据库模型
//视频链接 数据库模型字段
//后续使用到的结构体 map
type Video struct {
gorm.Model
ID string ` gorm:";primary_key"`
Category string `json:"Category" gorm:";primary_key " validate:"required" ` //视频分类
Title string `json:"Title" gorm:"" validate:"required" ` //视频的标题
HeadImg string `json:"HeadImg" validate:"required" ` //视频封面图片的存储地址
Content string `json:"Content" gorm:"" validate:"required" ` //视频内容描述
CreatedAt time.Time
UpdatedAt time.Time
}
//获取参数
//获取前端传过来
Category := c.PostForm("Category")
Title := c.PostForm("Title")
HeadImg := c.PostForm("HeadImg")
Content := c.PostForm("Content")
//数据验证
video := &model.Video{
Category: Category, //传入的文章分类ID
Title: Title, //传入的文章标题
HeadImg: HeadImg, //传入文章的图片
Content: Content, //传入文章的内容
}
validate := validator.New()
err := validate.Struct(video)
//err := //传入绑定指针
if err != nil {
c.JSON(200, gin.H{
"data": gin.H{
"err":fmt.Sprint(err),
},
"meta": gin.H{
"msg": "数据验证错误,请检查文章信息",
"status": 400,
},
})
return
}
// 获取登录用户(通过token,存在上下文中)
// 插入数据
if err := common.DB.Create(&video).Error; err != nil {
c.JSON(200, gin.H{
"data": gin.H{
"err": err,
},
"meta": gin.H{
"msg": "数据写入数据库失败",
"status": 400,
}})
return
}
// 成功
c.JSON(200, gin.H{
"data": gin.H{
"video": video,
},
"meta": gin.H{
"msg": "创建视频链接成功",
"status": 200,
},
})
}
捕捉错误返回给前端
validate := validator.New()
err := validate.Struct(video)
//err := //传入绑定指针
if err != nil {
c.JSON(200, gin.H{
"data": gin.H{
"err":fmt.Sprint(err),
},
"meta": gin.H{
"msg": "数据验证错误,请检查文章信息",
"status": 400,
},
})
return
}