Golang/gin: How to Pass db to router functions
我正在使用 gin 框架。我正在像这样
的主函数中打开sqlite数据库
1 2 3 4 5 6 7 | func main() { ... db, err := sql.Open("sqlite3","./libreread.db") CheckError(err) defer db.Close() ... } |
我在主函数中有这些路由器处理程序。
1 2 3 4 5 | ... r.GET("/", GetHomePage) r.GET("/signin", GetSignIn) r.POST("/signin", PostSignIn) ... |
如何通过路由器处理程序 func
这样我就可以避免每次在函数中打开和关闭数据库。
更新:我正在使用 go-sqlite3 包。
谢谢!
假设你在
将它传递给不同的路由
1 | r.GET("/", GetHomePageHandler(&db)) |
在你的 GetHomePageHandler 中:
1 2 3 4 5 | func GetHomePageHandler(sqldb *SQLiteConn) func (*gin.Context) { return func (*gin.Context) { . . . } } |
其中
您还可以在此答案中找到更优雅的解决方法,