swaggo报错:ParseComment error in file 【path】type x cannot find type definition x

26 阅读1分钟

在golang项目中使用swaggo 文档的时候报错。

项目中使用gin+gorm(postgresql) 的方式搭建,在添加注释的时候报错,不知道有没有解决方案?

psql支持数组,我就在model 的images 字段中使用了引用的pq.StringArray

// gorm Model
type Post struct{
    Images       pq.StringArray `json:"images" gorm:"type:text[]"`
}

在路由中使用

type ListPostReq struct {  PageSize int `json:"pageSize"`  Page     int `json:"page"`}type ListPostRes struct {  List  []database.Post `json:"list"`  Total int64           `json:"total"`}
// @Summary   获取列表// @Description 列表// @Tags      Post// @Accept      json// @Produce   json// @Param  query query ListPostReq true "ListPostReq object"// @Success   200 {object}  ListPostRes// @Failure   500// @Router      /post/list [get]func listPost(c *gin.Context) {  page, _ := strconv.Atoi(c.DefaultQuery("page", "1"))  pageSize, _ := strconv.Atoi(c.DefaultQuery("pageSize", "10"))  res := listPostRes{}  log.Println(page, pageSize)  database.DB.Model(&database.Post{}).Count(&res.Total)  result := database.DB.Limit(pageSize).Offset((page - 1) * pageSize).Find(&res.List)  if result.Error != nil {    c.JSON(http.StatusBadRequest, result.Error)    return  }  c.JSON(http.StatusOK, res)}

结果运行swag init 时提示报错信息:

Error parsing type definition 'database.Post': images: cannot find type definition: pq.StringArray
ParseComment error in file /internal/controller/post.go :database.Post: images: cannot find type definition: pq.StringArray

方式一

单独写一个仅供swagger 解析使用的类型

但是感觉这样会比太好,有没有其他方式可以即保留model的类型生效,又能让swagger 使用的到的方式