exportar var a rutas de archivos expressjs

Soy completamente nuevo en nodejs + expressjs proveniente de php y tengo problemas para exportar / incluir una var a mi archivo route / users.js.

en app.js tengo:

//database connection var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '', database : 'dbNodeExpress' }); 

… algún código

var user = require('./routes/user'); // Aquí incluyo mis rutas / archivos (no sé si es correcto incluir las rutas aquí; para propósitos de aprendizaje funciona por ahora)

… más código hasta que se inicie el servidor

En mi /routes/user.js

 app = require('../app'); //var mysql = require('mysql'); var baseUrl = app.get('baseUrl'); app.get('/users_mysql', function(req, res){ connection.query('SELECT * FROM users', function(err, users){ res.json(users); }); }); 

y me sale el error expreso: 500 ReferenceError: la conexión no está definida

La conexión funciona porque si muevo el contenido de users.js a app.js puedo consultar la base de datos.

Mi pregunta es cómo inyectar la conexión var que se usará en las rutas / users.js

Cualquier ayuda / sugerencia para entender esto es muy apreciada. Gracias por adelantado.

Hay varias maneras de hacer esto. Un par de soluciones podrían ser:

  1. Cree un archivo resources.js que cree y exporte la conexión. Luego, requiere () resources.js en cada archivo fuente donde lo necesite.

  2. Pase la conexión a su archivo de ruta de usuario. Algo como esto:

 // app.js var connection = mysql.createConnection({ host : 'localhost', user : 'root', password : '', database : 'dbNodeExpress' }); require('./routes/user')(connection); // routes/user.js module.exports = function(connection) { app.get('/users_mysql', function(req, res){ connection.query('SELECT * FROM users', function(err, users){ res.json(users); }); }); }; 

crear un archivo de conector de base de datos javascript. como like database_connector.js y solicítelo siempre que quiera tener la conexión agrupada o la clase de conexión disponible para sus modelos. Sugerencia : también puede exportar archivos de configuración como a continuación o usar apenas valores.

 var mysql = require('mysql'); var config = require("./config"); function Connection() { this.pool = null; this.init = function() { this.pool = mysql.createPool({ connectionLimit: config.poolSize, host: config.host, user: config.user, password: config.password, database: config.database, debug:config.debug, }); }; this.acquire = function(callback) { this.pool.getConnection(function(err, connection) { callback(err, connection); }); }; console.log("connection"+this.pool); } module.exports = new Connection();