에 걸쳐 MongoDB의 연결을 지속하기 주어진 다음의 app.js 코드 :모든 Node.js를 라우터 모듈
var express = require('express');
var app = express();
var mongodb = require('mongodb');
var db = null;
mongodb.MongoClient.connect('mongodb://localhost/mysite', function(err, database) {
if(err) throw err;
db = database;
app.listen(3000);
console.log('Listening on port 3000');
});
var outside = require('./outside');
app.use('/outside', outside);
app.get('/inside', function(req, res) {
collection = db.collection('pages');
collection.find({}, function(err, data) {
if(data) {
res.send('inside worked');
}else {
console.log('oops');
}
});
});
과 outside.js 코드는 다음과 같이
var express = require('express');
var router = express.Router();
router.get('/', function(req, res) {
collection = db.collection('pages');
collection.find({}, function(err, data) {
if(data) {
res.send('outside worked');
}else {
console.log('oops');
}
});
});
module.exports = router;
그림과 같이 "var db = null"을 사용하면 응용 프로그램에 로컬이며 내부 경로가 실행될 때 사용할 수 있지만 외부 경로에서는 사용할 수 없습니다.
"db = null"을 사용하여 전역으로 만들면 두 경로 모두에서 사용할 수 있습니다. 그것이 올바른/가장 우아한 방법인지 나는 확신하지 못한다. 그럴 경우 알려 주시기 바랍니다. 그렇지 않으면 나에게 더 나은 방법을 알려주세요. 매번 새로운 연결을 만들고 싶지 않습니다. 다른 유사한 게시물에 나와있는 것처럼 풀을 활용하고 싶습니다. 다른 유사한 게시물에 댓글 당
, 나는 app.js의 라인 변경 :dB = 데이터베이스; ~ db = 데이터베이스; app.locals.db = 데이터베이스;
가var db = req.app.locals.db;
그래서 지금 판독 :
및 outside.js 위해 줄을 추가 VAR의 DB = req.app.locals.db; collection = db.collection ('pages');
이것은 작동하지만 다른 게시물에서 언급했듯이이 연결을 다시 사용하는지 새 연결을 열 것인지 또는 연결 풀을 올바르게 사용하는지 확실하지 않습니다. 내가 프로젝트에서 무슨 짓을
감사 사용할 수 있습니다. 기존의 연결 및 연결 풀을 응용 프로그램에서 사용합니까? 아니면 사용할 때마다 새로운 연결을 열지 않습니까? –
응용 프로그램 전체에서 연결을 사용했습니다. 내 대답이 유용하다면,/upvote를 수락하십시오;) –
감사합니다 이스라엘. 나는 네 대답을 upvoted. 나는 이것에 처음이에요. 내가 이것을 받아들이 기 전에 이것이 가장 좋은 대답이라고 말하는 것보다 더 많이 knowledgable 인 다른 사람들의 의견을 기다리는 것이 좋습니다. –