На данный момент я пытаюсь создать небольшой веб-проект, используя Go для обработки данных на сервере.Перейти с помощью мультиплексора Router - Как передать мою БД моим обработчикам
Я пытаюсь передать мое соединение с базой данных для моего HandlerFunc (но), но он не работает должным образом. Я довольно новичок в голанге, поэтому, возможно, я не понял некоторых основных принципов этого языка.
Мой главный FUNC выглядит следующим образом:
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))
}
Мой маршрутизатор:
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.DB) моим FuncHandlers? Я много пробовал, но никто из них не работал.
Большое спасибо, Я уже посмотрел блог-блог Alex Edwards и попытался реализовать его решение закрытия (используя свой пример в https: //gist.github.com/alexedwards/5cd712192b4831058b21) Теперь я изменил его и использовал глобальный var в моем пакете моделей, и он работает. Я все еще не уверен, что это лучшее решение для моего проекта, но на данный момент это будет соответствовать моим потребностям. – Newbie