2017-02-27 5 views
1
type MainController struct { 
    beego.Controller 
} 

func (this *MainController) Post() { 
    var datapoint User 
    req := this.Ctx.Input.RequestBody 
    json.Unmarshal([]byte(req), &datapoint) 
    this.Ctx.WriteString("hello world") 
    // result := this.Input() 
    fmt.Println("input value is", datapoint.UserId) 

} 

これは、URL発生時に実行される通常のbeegoルータです。私は、データベース接続ポインタを使用するために、beegoルータに余分なパラメータを渡すことができます

type MainController struct { 
    beego.Controller 
} 

func (this *MainController,db *sql.DB) Post() { 

    fmt.Println("input value is", datapoint.UserId) 

} 

のようなものが欲しいです。これは

は、宣言は

function (c *MainController)Post() 

がポストであることを意味する形で

type MainController struct { 
    beego.Controller } 

func (this *MainController,db *sql.DB) Post() { 

    fmt.Println("input value is", datapoint.UserId) 

} 

答えて

0

を提案してくださいいない場合は、golangでこれを行うことはできません...行く使ってこれを達成することが可能です変数を渡すことができる構造体のメソッドです。

私の提案は、あなたが以下のようなパッケージでグローバル変数としてデシベルのポインタを宣言し、あなたがPost関数の内部

type MainController struct { 
    beego.Controller 
} 

var db *sql.DB 

func (this *MainController) Post() { 
    //you can now use the variable db inside here 
    fmt.Println("input value is", datapoint.UserId) 

} 

を、それを使用することができますですが、これはMVCパターンを使用するビーゴで考えますモデル内からすべてこれを行うことができます。私はあなたが彼らの素晴らしいを見てお勧めしますdocumentation here

+1

私は同じことをしようとしていた間にあなたが私がやっていることを投稿した.....それは私のために働いている – gophervk

関連する問題