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

时间:2015-06-28 00:00:54

标签: mongodb go mgo revel

我正在尝试使用revel框架和mgo驱动程序在mongodb中创建一个新数据库。这是我的代码 - > SRC / MyApp的/应用/分贝/ 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.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.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()
}

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

1 个答案:

答案 0 :(得分:1)

您可以从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()
}