2015-06-28 18 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() 
} 
相關問題