1. 程式人生 > 其它 >記錄一次使用validate,並將驗證錯誤結果返回給前端

記錄一次使用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
	}