我在我的 Node 应用程序中使用 express 3,我已经将我的路由分解成单独的文件...
app.use('/', routes);
app.use('/users', users);
问题是我需要在许多这些路由中建立数据库连接。我应该在每个路由文件中连接到数据库,还是可以在我的主应用程序文件中连接并以某种方式将连接传递给包含文件?
我使用 express-generator 创建了一个骨架应用。 在 app.js 中,路由是这样包含的...
app.use('/', routes);
app.use('/users', users);
在这些文件中,彼此之间有如下路径......
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
res.render('index');
});
最佳答案
我只是在应用程序中保持数据库连接:
app.set('db',new MyDAO(config));
<-- 在您定义路由的地方使用。
然后,在路由内,在 get()
或 post()
中,我只是做
req.app.get('db').usercollection.find()
通过这种方式,您可以将数据库连接池附加到全局应用程序上下文。
另一种常见的方法是在每个请求上扩展req
,但它每次都会执行:
app.use(function(req,res,next){
req.db = db; //this db comes from app.js context where you define it
next();
});
关于database - 在 nodejs 应用程序中传递数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25670075/