go - 如何正确使用for循环获取数据库数据
问题描述
我陷入了模板的问题,因为我还没有真正了解它是如何工作的。
我的项目是一个支持票证系统,我正在尝试从 db 获取所有条目。在这种情况下,我使用的是 BoltDB。
问题是,当我创建一个 for 循环时,html 文件中的所有内容也将在这个循环的“内部”。
如何正确编码,以显示条目而不重复我的 html?
package main
import (
"encoding/json"
"html/template"
"log"
"net/http"
)
type ManageTicketsPage struct {
Nome string
Chamado string
}
func ManageTicketsHandler(w http.ResponseWriter, r *http.Request) {
//Pick all tickets from boltdb.
entries := system_db_listTable(sysdb, "tickets")
results := [][]string{[]string{
"Chamado",
"Nome do Operador",
"Ativo Retorno",
"Ativo Saida",
"Status",
"Data da Solicitação",
"Atualizado em",
}}
for _, thisTicket := range entries {
ticketObjectJson := thisTicket[1]
thisTicketObject := new(ticket)
err := json.Unmarshal(ticketObjectJson, &thisTicketObject)
if err != nil {
panic(err)
}
thisCSVLine := []string{
thisTicketObject.Nome,
thisTicketObject.AtivoCPU,
thisTicketObject.AtivoSaida,
thisTicketObject.Status,
thisTicketObject.DataEntrada,
thisTicketObject.SubmissionTime.Format("02/01/2006 15:04"),
}
Nome := thisTicketObject.Nome
Chamado := thisTicketObject.AtivoCPU
p := ManageTicketsPage{Nome: Nome, Chamado: Chamado}
log.Println(Nome)
results = append(results, thisCSVLine)
t, _ := template.ParseFiles("web/admin/tickets.html")
t.Execute(w, p)
//log.Println(Nome)
}
}
解决方案
最好创建一个 Ticket 结构,解组到 Ticket 的一个切片中,只在该切片中渲染一次并在模板中使用范围。
推荐阅读
- python - PiCamera 将流数据保存到图像文件中
- html - 引导汉堡导航栏不起作用
- mysql - MySQL以日期时间间隔连接两个表
- javascript - 无法访问 Promise 对象
- unity3d - 如何检索位于列表中特定索引处的游戏对象?
- kotlin - 如何在 Jetty 中使用 SessionContext 配置 SessionHandler?
- java - 需要从 Hibernate SessionFactory 的 XML 定义中引用 String JavaBean
- reactjs - 使用 react-apollo 查询的不同方法
- mysql - mysql如何将多个表合并为一个表
- nextcloud - Nginx 访问第二个时重定向到第一个子域