2016-05-08 11 views

Odpowiedz

10

Wystarczy, aby pomóc kogoś w przyszłości ten pracował dla mnie:

stworzyłem plik złącze mysql zawierający basenu:

// 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; 

Później można po prostu włączyć wtyczkę w innym pliku umożliwia połączenie to manageDB.js:

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

i zrobił wpłacone metody takie jak to:

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

cześć .. więc jestem nowy również w węźle, więc mam pewne wątpliwości. Więc funkcja eksportu będzie w pliku z łączem w prawo? i nazwać to, będę musiał przekazać moje zapytanie jako parametr? –

+0

Zarówno connection.query (...) jak i connection.on (....) wymagają connection.release(); –

4

Istnieje kilka błędów w Utkarsh Kaushik solution:

  • jeśli (ERR), połączenie nie może zostać zwolniona. connection.release();

  • i kiedy ma ERR, obok oświadczenie .query zawsze wykonać chociaż robi błąd i spowodować, że aplikacja rozbił.

  • gdy wynik jest zerowy, mimo sukcesu zapytania, musimy sprawdzić, czy wynik jest w tym przypadku wartością NULL.

Rozwiązanie to działa dobrze w moim przypadku:

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

Można utworzyć plik połączenia, niech nazywa 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; 

Teraz to tego połączenia do innego pliku

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

Kiedy dzwonisz do "connect" cmd lub nie potrzebuję tego? –

+0

Jeśli chcesz sprawdzić, czy połączenie z bazą danych jest ustanowione, czy nie, możesz odwołać się do komentarza polecenia cmd, które już zostało wspomniane w kodzie, w przeciwnym razie nie trzeba go używać. – sumitjainjr

Powiązane problemy