【发布时间】:2018-07-12 22:02:48
【问题描述】:
我正在从 main 方法创建 mongodb 连接并推迟打开的连接。
func main(){
session := db.CreateConnection(connectionStr)
defer session.Close()
}
问题是我需要将此会话对象传递给用户处理程序结构并从该传递到数据库处理程序。
type UserController struct {
DB DBOps
}
type DBOps struct {
session *mgo.Session
}
问题: 我们如何直接创建会话对象和内部 db 处理程序文件并在应用程序关闭时推迟它?
db.go
type DBOps struct {
session *mgo.Session
}
func (m *DBOps) Init(connectionstr string) error {
session, err := mgo.Dial(connectionstr)
// Check if connection error, is mongo running?
if err != nil {
panic(err)
}
}
在主函数里面我可以直接调用
func main(){
db.Init(connectionstr);
}
但是如何在主方法上延迟这个会话对象?
【问题讨论】:
-
好的,谢谢。明白了。但是即使在关闭 main 方法后,在 init 上创建的会话也会存在。那是我的担心?
-
如果您从
main函数返回,您的整个应用程序将终止,并且不会等待其他非maingoroutines 完成。见:What's wrong with this golang code? -
好的。。谢谢。