2017-02-27 13 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 라우터에 추가 매개 변수를 전달할 수 있습니까?

과 같은 것을 원한다. 하지 양식

function (c *MainController)Post() 

에 golang

type MainController struct { 
    beego.Controller } 

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

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

} 

의 선언이 작업을 수행 할 수

답변

0

을 제안하십시오 ...이 이동하여 달성이 가능하다 포스트가 있음을 의미합니다 구조체에 대한 메서드를 변수에 전달할 수 있습니다.

나의 제안은 당신이 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 패턴을 사용 Beego입니다 아래처럼 패키지에 전역 변수로 DB 포인터를 선언하다 당신은 모델 내에서이 모든 것을 할 수 있습니다. 나는 당신이 그들의 굉장한 것을 보길 제안한다. documentation here

+1

나는 똑같은 것을 시도하고있는 동안 정확히 내가하고있는 것을 게시했다. 그것은 나를 위해 일하고있다. – gophervk