2012-01-05 239 views
1

在文件app.js我有:如何传递变量routes.index

, mongoose = require('mongoose') 
    , db = mongoose.connect('mongodb://localhost/expressdb'); 

    app.get('/', routes.index); 

和我有文件routes/index.js,如果我想db变量转移到routes.index我应该怎么办?

回答

3

我设置你如何能做到这一点,通过将DB作为参数传递给路由模块的示例,以及模块返回功能(其中db是可见):

路线。指数

module.exports = function (db) { 
    return function(req, res, next) { 
    // you can access db here 
    } 
} 

app.js

... 
routes = {}; 
routes.index = require('./routes')(db); 
... 
+0

谢谢'alessioalex' :) – 2012-01-05 19:52:13

1

我认为如果您尝试创建另一个连接(例如:数据库接口是单例),那么它在连接到数据库以便共享连接的库中相当标准。您可以尝试在您的routes/index.js文件中简单地拨打

db = mongoose.connect('mongodb://localeyes/expressdb'); 

,并且它可能会使用相同的连接。我建议阅读代码,看看它是否会使用现有的连接,或者如果它每次调用时都尝试重新连接。

编辑:关于第二个想法,你有一个不太可口的选项: 你可以把它推向全球,像这样

global.db = db; 

,然后在你的路由/ index.js

变种DB =全球。D b;