我应该在Node.js(Express)应用程序中将MySQL客户端定义在哪里?

Jos*_*ith 5 mysql node.js express

目前我正在设置我的客户端连接,node-mysql通过在我app.js的特殊情况中执行以下操作config/environment.js:

var client = mysql.createClient({
  user:     'USER',
  database: 'DATABASE',
  password: 'PASSWORD',
  host:     'HOST'
});

app.configure(function(){
  ...
  app.set('client', client);
  ...
});
Run Code Online (Sandbox Code Playgroud)

然后在我的客户端代码中,我只是打电话app.settings.client使用MySQL客户端.

我不确定这是否是正确的方法,当我正在进行测试时它肯定不起作用,因为我需要一个正在运行的应用程序实例.

有什么建议?

ale*_*lex 2

我认为有3种解决方案:

a)正如 @Raynos 在评论中建议的那样,使用app.set(key, value);设置 db 值,然后使用 app.set(key) 来获取该值。
b) 将您的路由包装到接受数据库作为参数的函数中。例子:

示例路由.js

module.exports = function (db) {
  return function(req, res, next) {
    // db is accessible here
  }
}
Run Code Online (Sandbox Code Playgroud)

应用程序.js

var = sample_route = require('./sample_route')(db);
app.get('/sample', sample_route);
Run Code Online (Sandbox Code Playgroud)


c) 创建一个可以在任何地方访问的全局变量(但不推荐):global.MY_DB = ...;