i using node.js restify module. have rest api outputs result of single mysql query in json. here code of api;
var rest_api_get_list = function (app, url_name) { function respond(req, res, next) { var door_mac = req.query.door_mac; var connection = own_mysql.getmysql_connection(); var query_str = "select doors.mac_addr, " + "sensors.sensor_type " + "from sensors " + "where (doors.mac_addr = ?) " ; var query_var = [door_mac]; var query = connection.query(query_str, query_var, function (err, rows, fields) { //if (err) throw err; if (err) { //throw err; console.log(err); logger.info(err); } else { res.send(rows); } }); return next(); } app.get(url_name, respond); };
suppose have query looks this;
var query_str_2 = "select knobs.mac_addr, " + "furniture.furniture_type " + "from furnitures" + "where (knobs.mac_addr = ?) " ;
i want combine output of 2 mysql queries query_str
, query_str_2
, have rest api return result in json. how can done?
to clearer, thinking of code doing this;
var rest_api_get_list = function (app, url_name) { function respond(req, res, next) { var door_mac = req.query.door_mac; var connection = own_mysql.getmysql_connection(); var query_str = "select doors.mac_addr, " + "sensors.sensor_type " + "from sensors " + "where (doors.mac_addr = ?) " ; var query_var = [door_mac]; var query = connection.query(query_str, query_var, function (err, rows_output_1, fields) { //if (err) throw err; }); var query_str_2 = "select knobs.mac_addr, " + "furniture.furniture_type " + "from furnitures" + "where (knobs.mac_addr = ?) " ; var query_2 = connection.query(query_str_2, query_var, function (err, rows_output_2, fields) { //if (err) throw err; }); //how display json output of rows_output_1 , rows_output_2? return next(); } app.get(url_name, respond); };
edit: started bounty attract answers use promises.
a module managing asynchronous control flow - async - can this.
for example:
function respond(req, res, next) { var door_mac = req.query.door_mac; var connection = own_mysql.getmysql_connection(); var query_var = [door_mac]; async.parallel([ function (callback) { var query_str = "select doors.mac_addr, " + "sensors.sensor_type " + "from sensors " + "where (doors.mac_addr = ?) " ; connection.query(query_str, query_var, callback); }, function (callback) { var query_str_2 = "select knobs.mac_addr, " + "furniture.furniture_type " + "from furnitures" + "where (knobs.mac_addr = ?) " ; connection.query(query_str_2, query_var, callback); } ], function (error, results) { // results[0] => result query_str // results[1] => result query_str_2 // ... return next() or whatever }) }
Comments
Post a Comment