node.js - How to resolve multiple queries together using Sequelizejs -


i have basic nodejs script:

var express = require('express'),   sequelize = require('sequelize'),   promise = require('bluebird'),   app = express(),   optimus = new sequelize('optimus', 'root', 'test', {host: '127.0.0.1', dialect: 'mysql'}),   query = 'select id borrowers limit 0,10',   query2 = 'select count(*) borrowers';  app.get('/', function(req,res) {    var chain = new sequelize.utils.querychainer();    console.log('begin');    chain.add(optimus, 'query', [query,null,null,[]])     .add(optimus, 'query', [query2,null,null,[]])     .run()     .success(function() {       console.log('done');     }).error(function(err) {       console.log('oh no');     });    console.log('end');   res.send('hi ma!'); });  var server = app.listen(3000, function() {     console.log('listening on port %d', server.address().port);   } ); 

neither 'done' nor 'oh no' ever fires leads me believe can' chain raw queries in manner.

what i'd accomplish asynchronously resolve both queries , pass results via res.send().

i have admit being complete n00b @ nodejs insights how correctly structure appreciated.

the major issue code fact, sending response client/browser early. instead of res.send-ing @ end of app.get method, need send answer inside success respectively inside error callback. here are:

var express = require('express'),   sequelize = require('sequelize'),   promise = require('bluebird'),   app = express(),   optimus = new sequelize('sequelize_test', 'root', null, {host: '127.0.0.1', dialect: 'mysql'}),   query = 'select id borrowers limit 0,10',   query2 = 'select count(*) count borrowers';  app.get('/', function(req,res) {    var chain = new sequelize.utils.querychainer();    console.log('begin');    chain     .add(optimus.query(query, null, { raw: true }))     .add(optimus.query(query2, null, { raw: true, plain: true }))     .run()     .success(function(results) {       res.send({         resultofquery1: results[0],         resultofquery2: results[1]       });     }).error(function(err) {       console.log('oh no', err);     }); });  var server = app.listen(3000, function() {     console.log('listening on port %d', server.address().port);   } ); 

please notice, changed credentials local ones. furthermore check arguments of chain.add. instead of passing values upcoming serial executation, throw actual asynchronous methods , let querychainer handle promises.


Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -