javascript - node.js + sequelize + query execution -
in node app using sequelize orm. in have execute 3 queries , after exxecuted have combine results json format.
my queries:
try { sequelize.query("select id_0, name_0, id_1, name_1 xxxx group id_0, name_0, id_1, name_1").success(function (result) { finalresult = result; }) } catch (err) { } try { sequelize.query("select yyyyyyyyyy(json datatype) value xxxxx limit 1").success(function (valueresults) { valueresults = valueresults[0].value; valueresults = json.parse(valueresults); (var prop in valueresults) { keyresult.push(prop); } }) } catch (err) { } try { sequelize.query("select country_name, level0, level1, level2, level3, level4 levels").success(function (result) { //console.log("ccccccc=" +util.inspect(levelsresult)); = result; levelsresult = result; }) } catch (err) { }
i have combine 3 outputs single , have format json. when tried print these 3 outputs @ last coming empty because of async calls.please me solve this.thanks in advance.
you can use flow control package this. there pure js ways of doing so, package async or promise implementation work (unless want exercise).
an example in async
async.series
or async.parallel
method (unsure call sequence if need sequential or parallel). this:
var async = require('async'); async.parallel({ query1 : function( cb ){ //perform query here. put cb() inside callback, results cb(null, "result1"); }, query2 : function( cb ){ //perform query here. put cb() inside callback, results cb(null, "result2"); }, query3 : function( cb ){ //perform query here. put cb() inside callback, results cb(null, "result3"); } },function parallelfinal(parallelerr, parallelresults){ if( parallelerr ) throw new error("something bad!"); console.log("results " + json.stringify( parallelresults ) ); });
results in:
results {"query1":"result1","query2":"result2","query3":"result3"}
you can set , manipulate objects in resulting method needed.
Comments
Post a Comment