我是Go noob,找不到任何在Go中打开mysql连接然后在http处理程序之间共享它的完整示例.这是我的代码到目前为止,我将如何使用我在HomeHandler中的main()中打开的数据库连接?
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
"log"
"net/http"
)
func main() {
fmt.Println("starting up")
db, err := sql.Open("mysql", "root:@/mydb?charset=utf8")
if err != nil {
log.Fatalf("Error opening database: %v", err)
}
db.SetMaxIdleConns(100)
r := mux.NewRouter()
r.HandleFunc("/", HomeHandler)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
func HomeHandler(w http.ResponseWriter, r *http.Request) {
fmt.Fprintf(w, "home")
}
Run Code Online (Sandbox Code Playgroud) 我已经开始将facebook身份验证集成到我的Rails 3.1站点中,但是当我单击fb auth对话框上的取消按钮时遇到了问题.当我点击取消时,我会被重定向回我的网站/ auth/facebook/callback,然后重定向到/ login页面(我正在使用Devise).
我想要做的是将取消的身份验证重定向到允许用户以标准方式(电子邮件,用户名,密码等)创建帐户的页面.如何覆盖重定向到/ login页面?
顺便说一下,我正在使用omniauth-facebook宝石.
谢谢!
我试图通过为它们创建一个新包来将我的http go代码分成"控制器",但是无法弄清楚如何将db类型传递给处理程序.我希望能够将我在main.go中创建的Db类型传递到index.go中的Index处理程序.如果这是解决这个问题的错误方法,请让我知道一个更好的方法(我正在学习,并希望现在保持简单).我的代码到目前为止:
main.go:
package main
import (
"database/sql"
"fmt"
_ "github.com/go-sql-driver/mysql"
"github.com/gorilla/mux"
"log"
"mvc3/app/c"
"net/http"
)
var Db *sql.DB
func main() {
fmt.Println("Starting up!")
var err error
Db, err = sql.Open("mysql", "root@/dev?charset=utf8")
if err != nil {
log.Fatalf("Error on initializing database connection: %s", err.Error())
}
Db.SetMaxIdleConns(100)
err = Db.Ping()
if err != nil {
log.Fatalf("Error on opening database connection: %s", err.Error())
}
r := mux.NewRouter()
r.HandleFunc("/", c.Index)
http.Handle("/", r)
http.ListenAndServe(":8080", nil)
}
Run Code Online (Sandbox Code Playgroud)
/app/c/index.go:
package c
import (
"fmt"
"net/http"
) …Run Code Online (Sandbox Code Playgroud)