2015-06-28 19 views
1

我想在mongodb中使用revel框架和mgo驱动创建一个新的数据库。这里是我的代码 - > SRC/MyApp的/应用/数据库/ mgo.go在golang中使用revel框架创建一个新的mongodb数据库

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

你有机会到db.Sessiondb.Users from controllers/app.go

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() 
} 
相关问题