我想获取我的数据库的一个表的值并在html中解析它们。这是我曾经尝试过的代码,但是我收到了一个名为nested func not allowed
的错误。
我开始创建一个结构:
type App struct{
Title string
Author string
Description string
}
我创建了一个渲染模板的函数:
func render(w http.ResponseWriter, tmpl string){
tmpl = fmt.Sprintf("templates/%s", tmpl)
t, err := template.ParseFiles(tmpl)
if err != nil{
log.Print("template parsing error: ", err)
}
err = t.Execute(w, "")
if err != nil{
log.Print("template executing error: ", err)
}
}
然后,在这里我从数据库中获取了应用程序并尝试将它们呈现给html。
func myApps(w http.ResponseWriter, r *http.Request){
db, err := sql.Open("postgres"," user=postgres dbname=test host=localhost password=1234 sslmode=disable")
if err != nil{
log.Fatal(err)
}
rows, err := db.Query(`SELECT title, author, description FROM apps
WHERE title ILIKE $1
OR author ILIKE $1
OR description ILIKE $1`)
defer rows.Close()
apps := []App{}
for rows.Next(){
b := App{}
err := rows.Scan(&b.Title, &b.Author, &b.Description)
apps = append(apps, b)
render(w, "myapps.html", apps)
}
提前谢谢你!
答案 0 :(得分:1)
该行可能包含for
statement:
for rows.Next(){
我没有看到在其他任何地方打开“{
”。
(或者它已关闭,但func myApps
未关闭)
也许应该是:
for rows.Next() {
b := App{}
err := rows.Scan(&b.Title, &b.Author, &b.Description)
apps = append(apps, b)
}
render(w, "myapps.html", apps)
}
无论如何,运行go fmt
总是一个好主意。