database - 在 nodejs 应用程序中传递数据库连接

标签 database node.js

我在我的 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/

相关文章:

node.js - 在 Node/ExpressJs 中类似的 Rails ActiveRecord 迁移

sql - 在 Liquibase 中执行第二次插入时如何引用自动递增的 ID?

mysql - 我可以用 cratedb 替换 mysql 大表吗

node.js - 可扩展的 Node 快速路线

node.js - 使用 Sequelize 更新时忽略密码 ' '

mysql - 在使用 MySql、express、angular、nodejs 时,express 和 node 的端口是否不同

ios - 服务器应如何代表 iOS 用户进行身份验证?

database - KD-Trees 和缺失值(向量比较)

php - 使用codeigniter查询本月创建的记录

php - 当日期刚刚保存为 UNIX 时间戳时,针对特定日期的 MySQL 过滤器