记录一次使用validate,并将验证错误结果返回给前端

记录一次使用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
	}
posted @ 2021-11-30 11:22  成强  阅读(528)  评论(0编辑  收藏  举报