github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/prepare/30_mongo/m/connect.go (about) 1 package m 2 3 import ( 4 "context" 5 "go.mongodb.org/mongo-driver/mongo" 6 "go.mongodb.org/mongo-driver/mongo/options" 7 "log" 8 "sync" 9 ) 10 11 var ( 12 _client *mongo.Client 13 connectOnce sync.Once 14 ) 15 16 func Connect(uri string) { 17 connectOnce.Do(func() { 18 c, err := mongo.NewClient(options.Client().ApplyURI(uri)) 19 if err != nil { 20 log.Fatal(err) 21 } 22 _client = c 23 err = _client.Connect(context.Background()) 24 if err != nil { 25 log.Fatal(err) 26 } 27 }) 28 } 29 30 func GetClient() *mongo.Client { 31 return _client 32 } 33 34 func Disconnect() { 35 if _client != nil { 36 if err := _client.Disconnect(context.Background()); err != nil { 37 log.Fatal(err) 38 } 39 } 40 }