You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Golang Fiber时无法在HTML模板中遍历数据求助

问题分析与修复

错误原因

  1. 后端数据传递错误:words 是 []models.Words 切片类型,切片本身没有 Title 和 Cover 字段,只有切片内的单个 models.Words 对象才拥有这些字段,直接写 words.Title 属于语法错误,且传递给模板的是错误的键值对。
  2. 模板遍历目标错误:模板中用 {{ range . }} 遍历根对象,但后端传递的是包含 name、cover 的 map,遍历 map 时每次迭代的元素是键值对(类型为 interface{}),自然无法找到 name 字段。
  3. 额外注意:models.Words 的字段必须是首字母大写的导出字段,否则模板无法访问这些字段(Golang 未导出字段以小写开头,外部包/模板无法访问)。

修复代码

后端 ListWords 函数修复

func ListWords(c *fiber.Ctx) error {
    db := database.DB.Db
    var words []models.Words
    // 增加数据库查询错误处理
    if err := db.Find(&words).Error; err != nil {
        return c.Status(fiber.StatusInternalServerError).SendString(err.Error())
    }
    // 将整个words切片传递给模板,键名设为words
    return c.Render("public/views/getWords.html", fiber.Map{
        "words": words,
    })
}

前端 HTML 模板修复

{{ range .words }}
{{ .Title }}-{{ .Cover }}
{{ end }}

补充说明

  • 确保 models.Words 的字段定义为导出形式(首字母大写),例如:
    type Words struct {
        Title string // 必须大写
        Cover string // 必须大写
        // 其他业务字段...
    }
    
  • 增加数据库查询的错误处理,能快速排查数据查询阶段的问题,避免渲染阶段出现模糊错误。

内容的提问来源于stack exchange,提问作者Haroune

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 17:07:19