NodeJS and mysql: waiting for a query result

I have a small project created using nodejs + express, and I also made a small service for sharing on some of its pages.

var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 100, host : 'host', user : 'user', password : 'password', database : 'database', debug : false }); function executeQuery(query, callback) { pool.getConnection(function (err, connection) { if (err) { return callback(err, null); } else if (connection) { connection.query(query, function (err, rows, fields) { connection.release(); if (err) { return callback(err, null); } return callback(null, rows); }) } else { return callback("No connection", null); } }); } function getResult(query) { return executeQuery(query, function (err, rows) { if (!err) { return rows; } else { console.log(err); } }); } function getServers() { var list = getResult("select * from table"); return list; } exports.getList = getList; 

Now my problem is: when I call module.GetServers (); from another module, the result is always undefined, because pool.getConnection is asynchronous (I suppose I'm completely new), so executeQuery does not give a result. How to make execQuery wait for the result to be obtained using connection.query?

+4
source share
1 answer

In your executeQuery function, you used callbacks to wait for results. In the same way, by implementing them in the getResult function, you can wait for the results after the query is executed. Something like that.

 var mysql = require('mysql'); var pool = mysql.createPool({ connectionLimit : 100, host : 'host', user : 'user', password : 'password', database : 'database', debug : false }); function executeQuery(query, callback) { pool.getConnection(function (err, connection) { if (err) { return callback(err, null); } else if (connection) { connection.query(query, function (err, rows, fields) { connection.release(); if (err) { return callback(err, null); } return callback(null, rows); }) } else { return callback(true, "No Connection"); } }); } function getResult(query,callback) { executeQuery(query, function (err, rows) { if (!err) { callback(null,rows); } else { callback(true,err); } }); } function getServers() { getResult("select * from table",function(err,rows){ if(!err){ return rows; }else{ console.log(err); } }); } exports.getList = getList; 
+4
source

All Articles