Перейти с использованием mux Router - Как передать мою БД моим обработчикам
Сейчас я пытаюсь создать небольшой Web-проект, использующий Go для обработки данных на сервере.
Я пытаюсь передать свое соединение с базой данных на мой HandlerFunc (tions), но оно не работает, как ожидалось. Я довольно новичок в Голанге, поэтому, возможно, я не понял некоторые основные принципы этого языка.
Мой основной функционал выглядит так:
func main() {
db, err := config.NewDB("username:password@/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))
}
Мой роутер:
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
}
и мои маршруты:
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,
},
}
Итак - как я могу передать мой "env" (или env.DB) моим FuncHandlers? Я перепробовал много вещей, но ни одна из них не сработала.