2016-10-17 36 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谁共享相同的概念。

相关问题