sql - nodejs - Running multiple queries using mssql -




i have express api post request containing sql query using mssql. working , returns result json well. issue have, when want call more once while other query still running..

here code:

app.post('/select', (req, res) => {   config.database = req.body.db;    var sqlquery = `select ${req.body.select} ${req.body.from}`;   if (req.body.where !== '' && req.body.where !== undefined) sqlquery += ` ${req.body.where}`;   if (req.body.order !== '' && req.body.order !== undefined) sqlquery += ` order ${req.body.order}`;   console.log(`query: ${sqlquery}`);    sql.connect(config).then(pool => {     return pool.request().query(sqlquery)   }).then(result => {     sql.close();     sqldone = true;     console.dir(result);     res.header('content-type', 'application/json');     res.json(result.recordset);   }).catch(err => {     sql.close();     sqldone = true;     console.log('caught error:');     console.log(err);   });   sql.on('error', err => {     sql.close();     console.log('sql request error:');     console.log(err);   }); }); 

the error when call react webapp superagent is:

error: global connection exists. call sql.close() first. 

this irritating have call api synchronously , wait first query return, before can call next one..

does know how run multiple queries @ once? have separate connection running query on 1 db another. same server though.

ok have managed past using wait-until library wait until boolean true suggested @splatten

app.post('/select', (req, res) => {   waituntil()     .interval(500)     .times(60)     .condition(() => {       return (sqldone ? true : false);     })     .done((result) => {       sqldone = false;       sql.connect(config).then(pool => {         console.log();         console.log('connected!');          config.database = req.body.db;          var sqlquery = `select ${req.body.select} ${req.body.from}`;         if (req.body.where !== '' && req.body.where !== undefined) sqlquery += ` ${req.body.where}`;         if (req.body.order !== '' && req.body.order !== undefined) sqlquery += ` order ${req.body.order}`;          console.log(`query: ${sqlquery}`);         return pool.request().query(sqlquery);       }).then(result => {         sql.close();         sqldone = true;         console.log();         console.log('result:');         console.dir(result.recordset);         res.header('content-type', 'application/json');         res.json(result.recordset);       }).catch(err => {         sql.close();         sqldone = true;         console.log();         console.error('caught error:');         console.error(err);         res.status(500).send({ error: err });       });       sql.on('error', err => {         sql.close();         sqldone = true;         console.log();         console.error('sql error:');         console.error(err);         res.status(500).send({ error: err });       });     });  }); 

bit of shame can't run multiple queries @ once guess limitation of sql, not library.





wiki

Comments

Popular posts from this blog

Asterisk AGI Python Script to Dialplan does not work -

python - Read npy file directly from S3 StreamingBody -

kotlin - Out-projected type in generic interface prohibits the use of metod with generic parameter -