gopkg.in/mgo.v2
GoアプリのデータベースとしてMongoDB(パッケージ)を使用しています。MongoDBのベストプラクティスによると、アプリケーションの起動時に接続を開き、アプリケーションの終了時に接続を閉じる必要があります。接続が閉じられることを確認するには、次のdefer
構文を使用できます。
session, err := mgo.Dial(mongodbURL)
if err != nil {
panic(err)
}
defer session.Close()
このコードをmain
関数で実行すると、すべてがうまくいきます。しかし、私はこのコードを別のgoファイルに入れたいです。実行すると、メソッドが実行された後にセッションが終了します。MongoDBのベストプラクティスに従ってGolangでセッションを開始および終了するための最良の方法は何ですか?
このようなことができます。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()
}
クローンは、元のセッションと同じソケットを再利用します。
他のパッケージでは、このメソッドを呼び出すことができます:
package main
session := common.GetMongoSession()
defer session.Close()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加