mysql - 我应该在 Node.js (Express) 应用程序中的什么地方定义我的 MySQL 客户端?

标签 mysql node.js express

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

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

app.configure(function(){
  ...
  app.set('client', client);
  ...
});

然后在我的客户端代码中,我只需调用 app.settings.client 即可使用 MySQL 客户端。

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

有什么建议吗?

最佳答案

我认为有 3 种解决方案:

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

sample_route.js

module.exports = function (db) {
  return function(req, res, next) {
    // db is accessible here
  }
}

app.js

var = sample_route = require('./sample_route')(db);
app.get('/sample', sample_route);


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

关于mysql - 我应该在 Node.js (Express) 应用程序中的什么地方定义我的 MySQL 客户端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8763193/

相关文章:

mysql - 何时使用索引

php - 删除不在INSERT语句mysql中的行

node.js - 如何在 node.js 中使用 express 上传

javascript - 我使用 mysql 的快速端点路由记录错误 : connect ECONNREFUSED 127. 0.0.1

javascript - Nunjucks 不渲染模板

mysql - 是否可以将 csv 文件中的数据附加到现有的 mysql 表中

mysql - 如何使用 Lookup 函数对表中列的值求和

node.js - 在 Node.js 中解析 Redis HGETALL 对象

javascript - Nock - 如何模拟二进制响应

node.js - Jade 模板传承