解决swag init无法找到gorm.Model的问题

821 阅读1分钟

我们有一个这样的API:

// @Summary 获取所有的医院信息
// @Schemes
// @Description
// @Tags Hospital
// @Accept json
// @Produce json
// @Success 200 {array} models.Hospital
// @Router /hospital [get]
func GetHospitals(ctx *gin.Context) {
	var items []models.Hospital

	database.DB.Preload("Region").Find(&items)

	ctx.JSON(http.StatusOK, items)
}

对应的models定义如下:


type Hospital struct {
	gorm.Model

	Name     string `json:"name"`
	Doctors  string `json:"doctors"`
	Region   Region `json:"region"`
	RegionID uint   `json:"region_id"`
}

type Region struct {
	gorm.Model

	// 城市名称
	Name string `json:"name"`
	// 省份
	PID uint `gorm:"column:pid" json:"pid"`
}

在运行swag init的时候报错:

2023/11/20 12:25:28 Error parsing type definition 'models.Hospital': : cannot find type definition: gorm.Model
2023/11/20 12:25:28 ParseComment error in file /Users/zhulin/workspace/pfapa_api/controllers/hospital.go :models.Hospital: : cannot find type definition: gorm.Model

解决方案

在命令行加上 --parseDependency --parseInternal

swag init --parseDependency --parseInternal

参考资料:github.com/swaggo/swag…