Powinieneś nawiązać połączenie raz i używać go we wszystkich programach obsługi.
Teraz to, co robisz, to ponowne łączenie się z bazą danych przy każdym żądaniu, nawet w przypadku żądań, które w ogóle nie korzystają z bazy danych. Poza tym wywołujesz next() zanim nawet czekasz na nawiązanie połączenia.
Połączenia z bazą danych mają być trwałe – a nie jednorazowe, więc przy takim podejściu prawdopodobnie uzyskasz bardzo słabą wydajność i nie jestem nawet pewien, dlaczego miałbyś to robić. Czy miałeś jakieś problemy z jednym połączeniem? Nie wydaje mi się, żeby takie ubijanie bazy danych pomogło. Jeśli już, może tylko pogorszyć sytuację.
Gdy łączysz się z Mongo za pomocą natywnegosterownika MongoDB Node.js istnieje kilka opcji, z których możesz skorzystać, na przykład:
poolSize
- Ustaw maksymalny rozmiar puli dla każdego indywidualnego połączenia serwera lub proxy (domyślnie5
)autoReconnect
- Połącz ponownie w przypadku błędu (domyślnietrue
)
Inne interesujące opcje to:reconnectTries
, reconnectInterval
, keepAlive
, connectTimeoutMS
, socketTimeoutMS
.
Możesz zmienić wartości tych opcji, jeśli nie jesteś zadowolony z ustawień domyślnych.
Aby uzyskać więcej informacji, zobacz:
- Błędy i próby połączeń
- MongoClient czyli jak połączyć się w nowym i lepszym sposób
- Samouczki / Połącz z MongoDB
- Informacje / Opcje połączenia / Ustawienia połączenia
- Pytanie dotyczące automatycznego ponownego łączenia sterownika mongo node.js (lista mailingowa)