目前,我通过在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);
...
});
然后在我的客户端代码中,我只需要调用app.settings.client
来使用MySQL客户端。
我不确定这是否是正确的方法,当我正在进行测试时它肯定不起作用,因为我需要一个正在运行的应用程序实例。
有什么建议吗?
答案 0 :(得分:2)
我认为更典型的方法是定义一个简单的中间件,将mysql客户端设置为请求的属性。例如:
var client = mysql.createClient({
user: 'USER',
database: 'DATABASE',
password: 'PASSWORD',
host: 'HOST'
})
app.use(function(req, res, next) {
req.mysql = client;
next();
});
然后在您的路线处理程序中,您可以访问req.mysql
。在您的测试用例中,您只需要以某种方式设置req.mysql
,它应该非常简单。
答案 1 :(得分:2)
我认为有三种解决方案:
a)正如@Raynos在评论中建议的那样,使用app.set(key, value);
设置db值,然后使用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 = ...;