gpt4 book ai didi

mongodb - 如何在 Go 中正确使用 MongoDB session ?

转载 作者:IT王子 更新时间:2023-10-29 00:36:16 26 4
gpt4 key购买 nike

我在我的 go 应用程序中使用 MongoDB(gopkg.in/mgo.v2 包)作为数据库。根据 MongoDB 最佳实践,我应该在应用程序启动时打开连接,并在应用程序终止时关闭它。为了验证连接将被关闭,我可以使用 defer 构造:

session, err := mgo.Dial(mongodbURL)
if err != nil {
panic(err)
}
defer session.Close()

如果我在 main 函数中执行这段代码,一切都会好起来的。但我想将这段代码放在单独的 go 文件中。如果我这样做,此 session 将在方法执行后关闭。根据 MongoDB 最佳实践,在 Golang 中打开和关闭 session 的最佳方法是什么?

最佳答案

你可以这样做。创建一个执行 Db 初始化的包

    package common

import "gopkg.in/mgo.v2"

var mgoSession *mgo.Session

// Creates a new session if mgoSession is nil i.e there is no active mongo session.
//If there is an active mongo session it will return a Clone
func GetMongoSession() *mgo.Session {
if mgoSession == nil {
var err error
mgoSession, err = mgo.Dial(mongo_conn_str)
if err != nil {
log.Fatal("Failed to start the Mongo session")
}
}
return mgoSession.Clone()
}

Clone重用与原始 session 相同的套接字。

现在在其他包中你可以调用这个方法:

package main

session := common.GetMongoSession()
defer session.Close()

关于mongodb - 如何在 Go 中正确使用 MongoDB session ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36432123/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com