Node.js, Express and Mysql. How is correct way -


what i'am trying achieve make db query inside closure. return data , send stuff user. understand best practice use database pooling. problem query not sync.

simplified code:

server.js

var express = require('express'),     app = express(),     server = require('http').createserver(app),     mysql = require('mysql');  app.set('db:pool', mysql.createpool(process.env.database_url));  var myclosure = require('./closure.js')(app));  app.get('/somepage', function(req, res) {     var data = myclosure.myquery();     res.send(data); });  app.get('/anotherpage', function(req, res) {     var data = myclosure.myquery();     res.send(data); }); app.listen(3000); 

closure.js

function myclosure(app) {     var pool = app.get('db:pool');     return {         myquery: function(inp) {             pool.getconnection(function(err, db) {                 if (err) throw err;                 db.query('select * table', function(err, rows, fields) {                    if (err) throw err;                    data = rows[0]                    db.release();                 });             });             return data;         }     }; } module.exports = myclosure; 

in examples found db related stuff made in route callback , response sent in query callback. way i'm trying not working myquery returns undefined because sql query not done there.

so correct way handle querys ?

make query-function handle callback too:

// server.js app.get('/somepage', function(req, res) {   myclosure.myquery(function(err, data) {     // todo: handle error...     res.send(data);   }); });  // closure.js ... myquery: function(callback) {   pool.getconnection(function(err, db) {     if (err) return callback(err);     db.query('select * table', function(err, rows, fields) {       // release connection before return anything, otherwise       // won't put pool...       db.release();       if (err) return callback(err);       callback(null, rows[0]);     });   }); } 

(i left out inp argument because didn't seem used)


Comments

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -