来自非Node背景,我的第一直觉就是定义我的服务
MyService.js
module.exports = new function(dbConnection)
{
// service uses the db
}
现在,我希望每个请求都有一个开放的数据库连接,所以我在中间件中定义:
res.locals.db = openDbConnection();
在一些消费的Express api代码中:
api.js
var MyService = require(./services/MyService')
...
router.get('/foo/:id?', function (req, res) {
var service = new MyService(res.locals.db);
});
现在,作为Node首选的依赖注入方法是通过require(...)
语句,似乎我不应该使用MyService
的构造函数来注入db
。
所以我想说我想拥有
var db = require('db');
位于MyService
的顶部,然后以某种方式使用db.current
....但是,如果res.locals
是db
,我将如何将数据绑定到当前handler = $('#prod-list li'); // Get a reference to your grid items.
对象一个模块本身?什么是在Node中处理这种瘦的推荐方法?