我目前使用氧化镁与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