Когда мой сервер запускается, он создаст соединение с базой данных mongo, захватит его *mgo.Session
и сохранит его в структуре "server" для обработчиков, определенных в этой структуре, для использования для обслуживания запросов.
Я вижу два способа действительно выполнить это.
1) Save the `*mgo.Session` in the struct.
Преимуществом этого является то, что вы можете вызывать Session.Copy
в каждом обработчике перед использованием сеанса для изоляции соединения. Недостатком является то, что вам нужно вызывать .DB("x").C("y")
для конкретного x
и y
для каждого обработчика. Если вы хотите изменить это, вам нужно найти каждый экземпляр, где вы его используете, и изменить его. Это не идеально.
2) Store the `*mgo.Database` or even `*mgo.Collection` object on the server struct.
Плюс в том, что вы можете настроить его в одном месте и использовать его. Недостатком является то, что, как представляется, нет способа использовать Copy()
для изоляции соединения.
Как вы рекомендуете хранить сеанс Монго, чтобы вы могли аккуратно использовать соединение и обеспечить изоляцию между запросами?