Al momento, provo a creare un piccolo progetto Web utilizzando Vai per la gestione dei dati sul server.Vai a utilizzare il router mux - Come passare il mio DB ai miei gestori
Cerco di passare la mia connessione al database al mio HandlerFunc (tions) ma non funziona come previsto. Sono abbastanza nuovo per Golang, quindi forse non ho capito alcuni principi di base di questo lang.
mio func principale appare così:
func main() {
db, err := config.NewDB("username:[email protected]/databasename?charset=utf8&parseTime=True")
if err != nil {
log.Panic(err)
}
env := &config.Env{DB: db}
router := NewRouter(env)
log.Fatal(http.ListenAndServe(":8080", router))
}
mio router:
func NewRouter(env *config.Env) *mux.Router {
router := mux.NewRouter().StrictSlash(true)
for _, route := range routes {
var handler http.Handler
handler = route.HandlerFunc
handler = Logger(handler, route.Name)
router.
Methods(route.Method).
Path(route.Pattern).
Name(route.Name).
Handler(handler)
}
return router
}
ei miei percorsi:
type Route struct {
Name string
Method string
Pattern string
HandlerFunc http.HandlerFunc
}
type Routes []Route
var routes = Routes{
Route{
"Index",
"GET",
"/",
controller.Index,
},
Route{
"Show",
"GET",
"/todos/{todoId}",
controller.TodoShow,
},
Route{
"Create",
"POST",
"/todos",
controller.TodoCreate,
},
}
Così - come posso passare la mia "ENV" (o env.DB) ai miei FuncHandlers? Ho provato molte cose, ma nessuna ha funzionato.
Grazie mille, Ho già dato un'occhiata al post di Alex Edwards e ho cercato di implementare la sua soluzione di chiusura (usando il suo esempio su https: //gist.github.it/alexedwards/5cd712192b4831058b21) Ora, l'ho cambiato e uso una variabile globale nel mio pacchetto di modelli e sta funzionando. Non sono ancora sicuro se sia la soluzione migliore per il mio progetto, ma per il momento si adatta alle mie esigenze. – Newbie