Je peux créer une connexion MySQL comme ceci:
var mysql = require('mysql');
var connection = mysql.createConnection({
Host : 'localhost',
user : 'me',
password : 'secret',
database : 'my_db'
});
connection.connect();
Mais je préfère lancer un pool et l'utiliser sur mon projet.
Juste pour aider quelqu'un à l'avenir, cela a fonctionné pour moi:
J'ai créé un fichier de connecteur mysql contenant le pool:
// 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;
Plus tard, vous pouvez simplement inclure le connecteur dans un autre fichier, appelons-le manageDB.js:
var pool = require('./mysqlConnector');
Et fait une méthode appelable comme celle-ci:
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;
});
});
}
Il y a quelques bugs dans solution Utkarsh Kaushik :
si (err), la connexion ne peut pas être libérée. connection.release();
et quand il a une erreur, la prochaine instruction .query
s'exécute toujours bien qu'il obtienne une erreur et provoque le blocage de l'application.
lorsque le résultat est nul malgré le succès de la requête, nous devons vérifier si le résultat est nul dans ce cas.
Cette solution a bien fonctionné dans mon cas:
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;
});
});
};
Vous pouvez créer un fichier de connexion, Appelons 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;
Incluez maintenant cette connexion à un autre fichier
var dbconnection = require('../dbcon');
dbconnection.query(query, params, function (error, results, fields) {
//Do your stuff
});