我们可以将额外的参数传递给beego路由器

时间:2017-02-27 06:26:10

标签: sql go controller beego

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路由器。我想要像

这样的东西
type MainController struct {
    beego.Controller
}

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

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

}

为了使用数据库连接指针。这是否有可能实现这一目标...如果不是请建议

1 个答案:

答案 0 :(得分:0)

你不能在golang

中这样做
type MainController struct {
    beego.Controller }

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

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

}

表格中的声明

function (c *MainController)Post()

表示Post是MainController结构的一种方法,您可以将变量传递给它。

我的建议是你将db指针声明为包中的全局变量,如下所示,你就可以在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,您可以在模型中完成所有这些操作。我建议你看看他们真棒documentation here