2014-09-22 96 views
1

嗨,我得到以下文档插入正常工作,我可以调用该函数。然而,我怀疑数据库连接这个功能的东西是非常有效的,因为我称它为每分钟30-40次。使用共享会话变量从我的函数插入mongodb

我需要将db会话连接移到我的函数之外,我认为它与* mongoSession有关,但无法让它工作。任何帮助将被appriciated。

tldr:如何移动功能

func insertmgo(aaa string, bbb string, ccc time.Time, wg *sync.WaitGroup) { 

// mongo stuff 
mongoDBDialInfo := &mgo.DialInfo{ 
    Addrs: []string{MongoDBHosts}, 
    Timeout: 60 * time.Second, 
    Database: AuthDatabase, 
    Username: AuthUserName, 
    Password: AuthPassword, 
} 
mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo) 
if err != nil { 
    log.Fatalf("CreateSession: %s\n", err) 
} 
mongoSession.SetMode(mgo.Monotonic, true) 
c := mongoSession.DB("x").C("ships") 

oneship.Created = ccc 
oneship.Name = bbb 
oneship.Type = aaa 

c.Insert(oneship) 
wg.Done() 
} 

回答

1

在你的函数中发现soloution

main { 

mongo stuff 
    mongoDBDialInfo := &mgo.DialInfo{ 
     Addrs: []string{MongoDBHosts}, 
     Timeout: 60 * time.Second, 
     Database: AuthDatabase, 
     Username: AuthUserName, 
     Password: AuthPassword, 
    } 
    mongoSession, err := mgo.DialWithInfo(mongoDBDialInfo) 
    if err != nil { 
     log.Fatalf("CreateSession: %s\n", err) 
    } 


} 

通话功能与

fun(mongoSession, .....) 

外连接

func fun(db *mgo.Session, .... , wg *sync.WaitGroup) { 

这是我想。不知道是否有其他或更好的方法来做到这一点,但这似乎适用于我。