2012-01-05 327 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;