Golang Gorm Fiber:如何将查询别名durums传递到索引模板?
解决Gorm查询别名传递到Fiber模板的问题
问题原因
你遇到的undeclared name: durums错误,核心原因是:
- Go是强类型语言,Gorm查询的别名
durums不会自动生成同名变量,必须通过结构体字段接收查询结果。 - 你直接在
fiber.Map中引用了未定义的durums变量,编译器自然抛出未声明的错误。
解决步骤
1. 更新结构体定义
修改model.Vfilan结构体,添加首字母大写的Durums字段(Go中只有导出字段才能被Gorm赋值、模板访问),并通过Gorm标签映射到查询别名durums:
package model type Vfilan struct { ID uint `gorm:"column:id"` Baslik string `gorm:"column:baslik"` DurumID uint `gorm:"column:durumid"` Durums string `gorm:"column:durums"` // 新增字段,对应查询中的durums别名 // 保留结构体原有其他字段 }
2. 修正模板数据传递
删除代码中错误的"Vdurum": durums,行——查询结果的durums值已经存储在Vilan切片的每个元素的Durums字段中了:
return c.Render("index", fiber.Map{ "VindwIlan": Vilan, // 移除"Vdurum": durums, 这一行 })
3. 模板中访问字段
在index模板里,遍历VindwIlan时直接访问每个元素的Durums字段即可:
<!-- 示例模板代码 --> {{range .VindwIlan}} <div>ID: {{.ID}},标题: {{.Baslik}},状态: {{.Durums}}</div> {{end}}
(可选)单独传递状态集合
如果需要单独传递所有durums值的集合,可以在查询后遍历Vilan收集:
// 查询完成后,收集所有durums值 var durumsList []string for _, item := range Vilan { durumsList = append(durumsList, item.Durums) } return c.Render("index", fiber.Map{ "VindwIlan": Vilan, "Vdurum": durumsList, })
此时模板中可以直接使用.Vdurum访问这个集合。
内容的提问来源于stack exchange,提问作者Ugur Tas
相关产品推荐
相关产品推荐

