我在app.js
中将mongodb与monk
相关联
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();
});
这里运作正常。但现在我在路线文件夹
中添加index.jsvar 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
中访问答案 0 :(得分:4)
我知道的两个解决方案是:
将连接放在另一个文件中,导入该文件。
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
已设置。
答案 1 :(得分:0)
创建一个单独的文件,如database.js
,并将代码放入其中:
module.exports = {
url : 'mongodb://localhost/productecom'
};
并要求此文件需要数据库连接:
就像在index.js中一样:
var database = require('./database');
mongoose.connect(database.url);
我的示例有mongodb和不同的网址,根据您的需要进行更改,因为我不知道monk
可能您需要导出整个和尚配置。它会起作用
答案 2 :(得分: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();
});
index.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的人有相同的概念。