我正在尝试使用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()
}
所以我希望有人帮我纠正我的前两部分代码
答案 0 :(得分:1)
您可以从controllers / app.go
访问db.Session
和db.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()
}