2016-05-08 38 views

risposta

10

Proprio per aiutare qualcuno in futuro, questo ha funzionato per me:

ho creato un file di connettore di mysql che contiene la piscina:

// Load module 
var mysql = require('mysql'); 
// Initialize pool 
var pool  = mysql.createPool({ 
    connectionLimit : 10, 
    host  : '127.0.0.1', 
    user  : 'root', 
    password : 'root', 
    database : 'db_name', 
    debug : false 
});  
module.exports = pool; 

In seguito si può semplicemente inserire il connettore in un altro file consente chiamata esso manageDB.js:

var pool = require('./mysqlConnector'); 

e ha fatto un metodo di callable come questo:

exports.executeQuery=function(query,callback){ 
    pool.getConnection(function(err,connection){ 
     if (err) { 
      connection.release(); 
      throw err; 
     } 
     connection.query(query,function(err,rows){ 
      connection.release(); 
      if(!err) { 
       callback(null, {rows: rows}); 
      }   
     }); 
     connection.on('error', function(err) {  
       throw err; 
       return;  
     }); 
    }); 
} 
+0

ciao .. quindi sono nuovo al nodo troppo quindi ho alcuni dubbi Quindi la funzione di esportazione sarà nel file connettore giusto ?? e per chiamare questo, dovrò passare la mia query come parametro? –

+0

Sia connection.query (...) che connection.on (....) richiedono connection.release(); –

4

ci sia qualche bug in Utkarsh Kaushik solution:

  • se (ERR), la connessione non può essere rilasciato. connection.release();

  • e quando ha un err, prossima dichiarazione .query eseguire sempre anche se diventa un errore e causare l'applicazione si è schiantato.

  • quando il risultato è nullo anche se la ricerca ha esito positivo, è necessario verificare se il risultato è nullo in questo caso.

Questa soluzione ha funzionato bene nel mio caso:

exports.getPosts=function(callback){ 
    pool.getConnection(function(err,connection){ 
     if (err) { 
      callback(true); 
      return; 
     } 
     connection.query(query,function(err,results){ 
      connection.release(); 
      if(!err) { 
       callback(false, {rows: results}); 
      } 
      // check null for results here 
     }); 
     connection.on('error', function(err) { 
       callback(true); 
       return; 
     }); 
    }); 
}; 
0

È possibile creare un file di connessione, Let chiama dbcon.js

var mysql = require('mysql'); 

// connect to the db 
dbConnectionInfo = { 
    host: "localhost", 
    port: "3306", 
    user: "root", 
    password: "root", 
    connectionLimit: 5, //mysql connection pool length 
    database: "db_name" 
}; 

//For mysql single connection 
/* var dbconnection = mysql.createConnection(
     dbConnectionInfo 
); 

dbconnection.connect(function (err) { 
    if (!err) { 
     console.log("Database is connected ... nn"); 
    } else { 
     console.log("Error connecting database ... nn"); 
    } 
}); 

*/ 

//create mysql connection pool 
var dbconnection = mysql.createPool(
    dbConnectionInfo 
); 

// Attempt to catch disconnects 
dbconnection.on('connection', function (connection) { 
    console.log('DB Connection established'); 

    connection.on('error', function (err) { 
    console.error(new Date(), 'MySQL error', err.code); 
    }); 
    connection.on('close', function (err) { 
    console.error(new Date(), 'MySQL close', err); 
    }); 

}); 


module.exports = dbconnection; 

ora includono la connessione a un altro file

var dbconnection = require('../dbcon'); 
dbconnection.query(query, params, function (error, results, fields) { 
    //Do your stuff 
}); 
+0

Quando si chiama 'connect' cmd o non ho bisogno di questo? –

+0

Se si desidera verificare che la connessione db sia stabilita o meno, è possibile annullare il commento del cmd di connessione che è già menzionato nel codice, altrimenti non è necessario utilizzarlo. – sumitjainjr