如何在 node.js 中访问整个应用程序中的数据库连接?
How to acess db connection in whole app in node.js?
我在 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.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
中可以访问我需要做的事情
像database.js
一样创建一个单独的文件并将代码放入其中:
module.exports = {
url : 'mongodb://localhost/productecom'
};
并在需要数据库连接的地方需要这个文件:
喜欢index.js:
var database = require('./database');
mongoose.connect(database.url);
我的示例有 mongodb 和不同的 url,根据您的需要进行更改,因为我不知道 monk
也许您需要导出整个 monk 配置。,它将工作
我知道的两种解决方案是:
将连接放在另一个文件中,导入该文件。
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
。
只需创建一个带有数据库连接的简单 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。
我在 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
中可以访问我需要做的事情像database.js
一样创建一个单独的文件并将代码放入其中:
module.exports = {
url : 'mongodb://localhost/productecom'
};
并在需要数据库连接的地方需要这个文件:
喜欢index.js:
var database = require('./database');
mongoose.connect(database.url);
我的示例有 mongodb 和不同的 url,根据您的需要进行更改,因为我不知道 monk
也许您需要导出整个 monk 配置。,它将工作
我知道的两种解决方案是:
将连接放在另一个文件中,导入该文件。
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
。
只需创建一个带有数据库连接的简单 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。