小编Jas*_*son的帖子

如何在http goroutines之间共享mysql连接?

我是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)

go

34
推荐指数
1
解决办法
2万
查看次数

Omniauth-facebook取消按钮

我已经开始将facebook身份验证集成到我的Rails 3.1站点中,但是当我单击fb auth对话框上的取消按钮时遇到了问题.当我点击取消时,我会被重定向回我的网站/ auth/facebook/callback,然后重定向到/ login页面(我正在使用Devise).

我想要做的是将取消的身份验证重定向到允许用户以标准方式(电子邮件,用户名,密码等)创建帐户的页面.如何覆盖重定向到/ login页面?

顺便说一下,我正在使用omniauth-facebook宝石.

谢谢!

facebook devise omniauth

6
推荐指数
1
解决办法
902
查看次数

如何将类型传递给http处理程序

我试图通过为它们创建一个新包来将我的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)

go

2
推荐指数
1
解决办法
1264
查看次数

标签 统计

go ×2

devise ×1

facebook ×1

omniauth ×1