使用 golang 中的 revel 框架创建一个新的 mongodb 数据库

Creating a new mongodb database using revel framework in golang

我正在尝试使用 revel 框架和 mgo 驱动程序在 mongodb 中创建一个新数据库。这是我的代码 --> src/myapp/app/db/mgo.go

package db

import (
    "fmt"
    "gopkg.in/mgo.v2"
)

var Session *mgo.Session
var Users   *mgo.Collection

func Init(url, dbname string) {

    var err error
    Session,err = mgo.Dial(url)
    if err!=nil{
        panic(err)
    }

    Session.SetMode(mgo.Monotonic, true)
    Users = Session.DB(dbname).C("users")
}

这是程序运行的代码 --> src/myapp/app/controllers/app.go

package controllers

import (
    "github.com/revel/revel"
    "myapp/app/db"
)

type App struct {
    *revel.Controller
}

func (c App) Hello() revel.Result{

    db.Init("127.0.0.1", "mydb")
    return c.Render()
}

问题是我无法通过这两部分单独的代码文件创建数据库,而当我将它们合并为一个(即 app.go)时,它运行良好。这是在 --> src/myapp/app/controllers/app.go

中运行的代码
package controllers

import (
    "github.com/revel/revel"
    "gopkg.in/mgo.v2"
)

type App struct {
    *revel.Controller
}

func (c App) Hello() revel.Result{

    session,err:=mgo.Dial("127.0.0.1")

    if err != nil {
        panic(err)
    }

    defer session.Close()

    session.SetMode(mgo.Monotonic, true)

    d:=session.DB("mydb").C("anydata")
    return c.Render()
}

所以我希望有人能帮助我纠正我的前两部分代码

您可以从 controllers/app.go

访问 db.Sessiondb.Users
package controllers

import (
    "github.com/revel/revel"
    "myapp/app/db"
 )

type App struct {
    *revel.Controller
}

func init() {
    db.Init("127.0.0.1", "mydb")
}

func (c App) Hello() revel.Result{


    //there use db
    db.Session.Find(...)
    return c.Render()
}