2014-04-16 34 views
0

我完全不熟悉nodejs + expressjs从php来的问题,并且遇到了如何将var/include var导入到我的routes/users.js文件中的问题。将var导出到路由文件expressjs

上app.js我:

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

...一些代码

var user = require('./routes/user'); //这里我包括我的路线/文件(我不知道这是否是正确的,包括在这里的路线 - 学习的目的,适用于现在)

...更多的代码,直到启动服务器

在我/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); 
    }); 
}); 

,我也得到了明确的错误:500的ReferenceError:连接没有定义

的连接工作,因为如果我摆脱users.js内容到app.js我可以查询数据库。

我的问题是如何注入到被航线上使用了var连接/ users.js

任何帮助/提示明白这是非常赞赏。提前致谢。

+0

看看Node.js中的module.exports。也看看这个https://github.com/focusaurus/express_code_structure/blob/master/app/ –

回答

2

有几种方法可以做到这一点。几种解决方案可能是:

  1. 创建一个用于创建和导出连接的resources.js文件。然后在需要它的每个源文件中require()resources.js。

  2. 将连接传递给用户路径文件。事情是这样的:

// 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); 
    }); 
    }); 
}; 
1

创建数据库连接器的JavaScript文件。就像database_connector.js 一样,并且当你希望将连接池或连接类availabel连接到模型时就需要它。 提示:您还可以导出像下面这样的配置文件或使用几乎没有值。

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();