title: Node JS with oracleDB re-usable function
body: <p>I am trying to learn nodeJS here. But I don't understand what wrong I did here? Debugger does not help at all. Any help is appreciate here. It works when I do not put function i.e. </p>
  
  <blockquote>
    <p>function (sql, params) {</p>
  </blockquote>
  
  <p><strong>db.js</strong></p>
  
  <pre><code>var oracledb = require('oracledb');
  var dbConfig = require('./dbconfig.js');
  
  var rows;
  
  // Get a non-pooled connection
  var getConnected = function (sql, params) {
  
      oracledb.getConnection(
          {
              user: dbConfig.user,
              password: dbConfig.password,
              connectString: dbConfig.connectString
          },
          function (err, connection) {
              if (err) {
                  console.error(err.message);
                  return;
              }
              connection.execute(
                  sql, params,
  
                  function (err, result) {
                      if (err) {
                          console.error(err.message);
                          doRelease(connection);
                          return;
                      }
                      //console.log(result.metaData); // [ { name: 'DEPARTMENT_ID' }, { name: 'DEPARTMENT_NAME' } ]
                      //console.log(result.rows);     // [ [ 180, 'Construction' ] ]
                      //module.exports.rows  = result.rows;
                      rows = result.rows;
                      doRelease(connection);
                      return rows;
                  });
          });
  };
  
  
  // Note: connections should always be released when not needed
  function doRelease(connection) {
      connection.close(
          function(err) {
              if (err) {
                  console.error(err.message);
              }
          });
      }
  
  module.exports.getConnected = getConnected;
  </code></pre>
  
  <p><strong>users.js</strong></p>
  
  <pre><code>var express = require('express');
  var router = express.Router();
  var db = require('../db');
  
  /* GET users listing. */
  router.get('/all', function(req, res) {
      "user strict";
      var allUser = db.getConnected("select * from users", []);
      res.render('users', { allUsers: allUser});
  });
  </code></pre>
  
  <p><strong>app.js</strong></p>
  
  <pre><code>var express = require('express');
  var path = require('path');
  var favicon = require('serve-favicon');
  var logger = require('morgan');
  var cookieParser = require('cookie-parser');
  var bodyParser = require('body-parser');
  
  var index = require('./routes/index');
  var users = require('./routes/users');
  
  var app = express();
  
  // view engine setup
  app.set('views', path.join(__dirname, 'views'));
  app.set('view engine', 'jade');
  
  // uncomment after placing your favicon in /public
  //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  app.use(logger('dev'));
  app.use(bodyParser.json());
  app.use(bodyParser.urlencoded({ extended: false }));
  app.use(cookieParser());
  app.use(express.static(path.join(__dirname, 'public')));
  app.use(express.static('node_modules/bootstrap/dist'));
  
  app.use('/', index);
  app.use('/users', users);
  /*
  
  // catch 404 and forward to error handler
  app.use(function(req, res, next) {
    var err = new Error('Not Found');
    err.status = 404;
    next(err);
  });
  
  // error handler
  app.use(function(err, req, res, next) {
    // set locals, only providing error in development
    res.locals.message = err.message;
    res.locals.error = req.app.get('env') === 'development' ? err : {};
  
    // render the error page
    res.status(err.status || 500);
    res.render('error');
  });
  */
  
  module.exports = app;
  </code></pre>