Dovresti effettuare la connessione una volta e utilizzarla in tutti i gestori.
In questo momento quello che stai facendo è riconnetterti al database su ogni singola richiesta, anche su quelle richieste che non utilizzano affatto il database. Inoltre, stai chiamando next() prima ancora di aspettare che la connessione venga stabilita.
Le connessioni al database sono pensate per essere persistenti, non cose una tantum, quindi è probabile che otterrai prestazioni molto scarse con il tuo approccio e non sono nemmeno sicuro del motivo per cui vorresti farlo. Hai avuto problemi con una singola connessione? Non credo che martellare il tuo database in questo modo aiuterebbe. Semmai, può solo peggiorare le cose.
Quando ti connetti a Mongo con il driver nativoMongoDB Node.js ci sono alcune opzioni che puoi usare, come:
poolSize
- Imposta la dimensione massima del pool per ogni singolo server o connessione proxy (l'impostazione predefinita è5
)autoReconnect
- Riconnetti in caso di errore (l'impostazione predefinita ètrue
)
Alcune altre opzioni interessanti sono:reconnectTries
, reconnectInterval
, keepAlive
, connectTimeoutMS
, socketTimeoutMS
.
Puoi modificare i valori di tali opzioni se non sei soddisfatto delle impostazioni predefinite.
Per maggiori informazioni vedere:
- Errori di connessione e tentativi
- MongoClient o come connettersi in un modo nuovo e migliore modo
- Tutorial / Connessione a MongoDB
- Riferimento/Opzioni di connessione/Impostazioni di connessione
- Domanda sulla riconnessione automatica del driver mongo node.js (mailing list)