ich unter "go" Code leite und viele Fehler bekommen:DB & Kontext zu viele Fehler
package main
import (
"database/sql"
"log"
"github.com/get-ion/ion"
"github.com/get-ion/ion/context"
"github.com/get-ion/ion/view"
_ "github.com/go-sql-driver/mysql"
)
func main() {
app := ion.New()
app.RegisterView(view.HTML("./templates", ".html"))
db, err := sql.Open("mysql", "root:[email protected]/database?charset=utf8&parseTime=true&loc=Local")
if err != nil {
log.Fatalln(err)
panic("There was an error handling mysql connection!")
}
defer db.Close()
allRoutes := app.Party("/", logThisMiddleware)
{
allRoutes.Get("/", homePage(db))
}
}
func logThisMiddleware(ctx context.Context) {
ctx.Application().Logger().Infof("Path: %s | IP: %s\n", ctx.Path(), ctx.RemoteAddr())
ctx.Next()
}
func homePage(db *sql.DB) {
func(ctx context.Context) {
var (
id int
title string
featured_image string
created_at string
)
rows, err := db.Query("SELECT id, title, featured_image, created_at from blogs order by crated_at desc limit 0,5")
if err != nil {
ctx.Application().Logger().Fatalf("MySQL Error fetching row %s\n", err)
}
defer rows.Close()
blogData := map[int]map[int]string{}
for rows.Next() {
err := rows.Scan(&id, &title, &featured_image, &created_at)
if err != nil {
ctx.Application().Logger().Fatalf("Error while fetching row from blog: %s\n", err)
}
blogData[id][0] = title
blogData[id][1] = featured_image
blogData[id][2] = created_at
}
err = rows.Err()
if err != nil {
ctx.Application().Logger().Fatalf("Error while scanning Row : %s\n", err)
}
ctx.ViewData("blog", blogData)
ctx.View("homepage.html")
}
}
Fehler sind: -
./main.go:40: homePage(db) used as value
./main.go:50: func literal evaluated but not used
Alle Werte abgerufen werden wie in erwähnt: http://go-database-sql.org/retrieving.html, Immer noch nicht sicher, warum undefinierte Variable Problem. Ich denke nicht, dass diese Variablen erstellt werden müssen, aber wenn es sein muss, lass es mich wissen.
Dank
Ja, mein Fehler Ich habe vergessen, den Code hier zu aktualisieren "Rückkehr" ", jetzt entfernt und aktualisiert Code und Fehler. Über die 'void'-Funktion Wie kann ich auf' db' verweisen, um zu funktionieren? Ich möchte nicht "DB" Verbindung in jeder Funktion öffnen. Ich möchte es nur von main aus beziehen. Ist es möglich ? – user3767643
homePage sollte context.Handler zurückgeben. – mattn
Ja, das habe ich schon gemacht. Aber mein Fehler ist auf 'homePage (db)', gibt es einen Weg, kann ich db von 'Hauptfunktion auf 'homePage' Funktion verweisen? – user3767643