我目前使用氧化鎂與LIB的web應用程序的mongodb一個一個的MgO會議,但我不知道如果我在使用它的方式,是很好的一個..最佳實踐,以保持
package db
import (
"gopkg.in/mgo.v2"
)
const (
MongoServerAddr = "192.168.0.104"
RedisServerAddr = "192.168.0.104"
)
var (
MongoSession, err = mgo.Dial(MongoServerAddr)
MDB = MongoSession.DB("message")
MCol = MDB.C("new")
MSav = MDB.C("save")
UDB = MongoSession.DB("account")
UCol = UDB.C("user")
)
我初始化了數據庫會話並創建了獲取集合和文檔值的變量, 因此,當我需要查詢集合時,我使用該變量創建它。
就像是:
func UserExist(username string) bool {
user := Users{}
err := db.UCol.Find(bson.M{"username": username}).One(&user)
if err != nil {
return false
} else {
return true
}
}
那麼,有沒有一個最佳做法或這個人是很好..? 謝謝
最好的做法是使用函數來設置數據庫會話,而不是變量聲明。使用函數的一個原因是您可以處理來自撥號的錯誤返回。對於UserExist,我將使用[結果集中的文檔數量](http://godoc.org/gopkg.in/mgo.v2#Query.Count)來確定文檔是否存在。沒有必要獲取實際的文檔。 – 2014-10-26 16:31:15
感謝您提供UserExist功能的提示!但有了初始化會話連接的功能,我可以在db包中使用「func init()」來完成它,併爲返回會話分配db和collection的全局變量?我只是不知道如何保持我打開數據庫的會話,沒有每次我需要它時,「mgo.Dial()」,也有我的數據庫和集合已經初始化... – JonathanChaput 2014-10-26 17:00:33