Создание новой базы данных mongodb с использованием фреймворка revel в golang

Я пытаюсь создать новую базу данных в mongodb, используя структуру revel и драйвер mgo. Вот мой код --> 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()
}

Поэтому я хотел бы, чтобы кто-нибудь помог мне исправить мои первые две части кода.


person Aditi    schedule 28.06.2015    source источник


Ответы (1)


у вас есть доступ к db.Session и db.Users из 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()
}
person Zhuharev    schedule 06.07.2015