Użyj puli połączeń mysql. Połączy się ponownie, gdy połączenie zostanie zerwane, a Ty uzyskasz dodatkową korzyść w postaci możliwości wykonywania wielu zapytań sql w tym samym czasie. Jeśli nie korzystasz z puli bazy danych, Twoja aplikacja będzie blokować żądania bazy danych podczas oczekiwania na zakończenie aktualnie uruchomionych żądań bazy danych.
Zwykle definiuję moduł bazy danych, w którym moje zapytania są oddzielone od moich tras. Wygląda mniej więcej tak...
var mysql = require('mysql');
var pool = mysql.createPool({
host : 'example.org',
user : 'bob',
password : 'secret'
});
exports.getUsers = function(callback) {
pool.getConnection(function(err, connection) {
if(err) {
console.log(err);
callback(true);
return;
}
var sql = "SELECT id,name FROM users";
connection.query(sql, [], function(err, results) {
connection.release(); // always put connection back in pool after last query
if(err) {
console.log(err);
callback(true);
return;
}
callback(false, results);
});
});
});