【问题标题】:How to transfer variable to routes.index如何将变量传输到 routes.index
【发布时间】:2012-01-05 19:22:19
【问题描述】:
在文件app.js 我有:
, mongoose = require('mongoose')
, db = mongoose.connect('mongodb://localhost/expressdb');
app.get('/', routes.index);
并且我有文件routes/index.js,如果我想将db 变量转移到routes.index 我该怎么办?
【问题讨论】:
标签:
node.js
mongodb
express
mongoose
data-transfer
【解决方案1】:
我已经设置了一个示例,说明如何通过将 db 作为参数传递给路由模块,然后该模块返回一个函数(其中 db 可见):
routes.index
module.exports = function (db) {
return function(req, res, next) {
// you can access db here
}
}
app.js
...
routes = {};
routes.index = require('./routes')(db);
...
【解决方案2】:
如果您尝试创建另一个连接(即:数据库接口是单例),我认为在连接到数据库以共享连接的库中这是相当标准的。您可以尝试简单地调用
db = mongoose.connect('mongodb://localeyes/expressdb');
在您的 routes/index.js 文件中,它可能会使用相同的连接。我建议阅读代码以查看它是否会使用现有连接,或者它是否会在您每次调用它时尝试重新连接。
编辑:再想一想,您还有另一个不那么美味的选择:
你可以让它像这样全球化
global.db = db;
然后在你的 routes/index.js 中
var db = global.db;