我在运行在 Google Cloud 的 App Engine 上的 Go (1.11) 服务器中使用了MongoDB Go Driver。我不确定我是否仍然必须手动设置连接池,或者是否已经开箱即用。例如,我不完全确定上下文(带超时)的确切含义。
我的代码如下所示:
package tools
import (
"context"
"time"
"valuation-app/settings"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
// ConnectToDB starts a new database connection and returns a reference to it
func ConnectToDB() (*mongo.Database, error) {
settings := settings.Get().Database
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
defer cancel()
options := options.Client().ApplyURI(settings.URI)
options.SetMaxPoolSize(10)
client, err := mongo.Connect(ctx, options)
if err != nil {
return nil, err
}
return client.Database(settings.DatabaseName), nil
}
Run Code Online (Sandbox Code Playgroud)