Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Node.js MySQL benötigt dauerhafte Verbindung

Verwenden Sie den MySQL-Verbindungspool. Die Verbindung wird wiederhergestellt, wenn eine Verbindung unterbrochen wird, und Sie erhalten den zusätzlichen Vorteil, dass Sie mehrere SQL-Abfragen gleichzeitig durchführen können. Wenn Sie den Datenbankpool nicht verwenden, blockiert Ihre App Datenbankanfragen, während sie darauf wartet, dass derzeit ausgeführte Datenbankanfragen abgeschlossen werden.

Normalerweise definiere ich ein Datenbankmodul, in dem ich meine Abfragen von meinen Routen trenne. Es sieht in etwa so aus...

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);
    });
  });
});