2016-10-17 84 views
1

monk在app.js如何在node.js中訪問整個應用程序中的數據庫連接?

var express = require('express'); 
var cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 
var mongo = require('mongodb'); 
var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 

app.use(function(req,res,next){ 
    req.db = db; 
    next(); 
}); 

連接的MongoDB它工作在這裏很好。但現在我添加index.js路線文件夾

var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 

exports.index = function(req, res){ 
    var collection = db.get('usercollection'); 
    collection.find({},{},function(e,docs){ 
    res.render('userlist', { "userlist" : docs}); 
}); 
res.render('index', { title: 'Express' }) 
}; 

它也工作正常。但是我在app.js和index.js中連接了數據庫。 這件事,我需要做的是連接在app.js定義是index.js訪問

回答

2

兩個解決方案,我知道是:

放入另一個文件是文件的連接,進口。

db.js

var monk = require('monk'); 
module.exports = monk('localhost:27017/nodetest1'); 

其他文件:

var db = require('./db.js'); 

或者繞過相同的連接:

app.js:

var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 
var module = require('./myModule.js')(db); 

myModule.js:

module.exports = (db) => { 
    //... 
}; 

或者:

app.js:

var monk = require('monk'); 
var db = monk('localhost:27017/nodetest1'); 
var module = require('./myModule.js'); 
module.init(db); 

myModule.js:

var db; 

exports.init = (masterDb) => { 
    db = masterDb; 
}; 

並且保證db在使用它之前設置。

0

創建像database.js一個單獨的文件,並把它的代碼:

module.exports = { 
    url : 'mongodb://localhost/productecom' 
}; 

,並在那裏你需要這個文件需要數據庫連接:

像index.js:

var database = require('./database'); 
mongoose.connect(database.url); 

我的例子有MongoDB的和不同的網址,使日即改變根據自己的需要,因爲我不知道monk也許你需要導出整個和尚的配置,它會工作

0

只需創建一個簡單的db.js與數據庫連接文件,需要你的連接時,你需要按如下方式使用它:

db.js

var monk = require('monk'); 
module.exports = monk('localhost:27017/nodetest1'); 

app.js

... 
var db = require('./db.js'); 

app.use(function(req,res,next){ 
    req.db = db; 
    next(); 
}); 

索引。js

var db = require('./../db.js'); 

exports.index = function(req, res){ 
    var collection = db.get('usercollection'); 
    collection.find({},{},function(e,docs){ 
     res.render('userlist', { "userlist" : docs}); 
    }); 
    res.render('index', { title: 'Express' }) 
}; 

致信@DrakaSAN誰共享相同的概念。

相關問題