ExpressJs를 Node.js와 함께 사용하고 모든 경로를 'routes'폴더에 넣었습니다. 서버에서 ExpressJS 및 별도의 경로 파일간에 변수 전달
, 나는 다음과 같이 내 경로를 정의, 내 DB 연결을 수행var routes = require('./routes');
var db;
dbconnect = new mongo.Db(config.mongo_database, new mongo.Server(config.mongo_host, config.mongo_port, {}), {});
dbconnect.open(function (err, db) {
db.authenticate(config.mongo_user, config.mongo_pass, function (err, success) {
if (success) {
//routes/index.js
app.get('/', routes.index);
//routes/users.js
app.get('/users', routes.users);
}
});
});
내가 자바 스크립트 파일이 노선들은 각각 내부의 'DB'개체에 액세스 할 수 있습니다. 이 'app.js'파일에서 index.js 또는 users.js로 어떻게 전달합니까?
감사합니다.
routes.js :
단점은 이제 컨트롤러에서 "모듈"을 다시 사용할 때마다 서명에 추가해야하며 일부 컨트롤러에 2가 필요하고 3이 필요하고 1이 5가 필요한 상황이 발생할 수 있습니다. 이제는 가장 큰 공통 분모를 수용해야하는 서명이 있습니다. 더 나은 접근 방식은 느슨하게 연결된 모듈에서 DB 동작을 캡슐화하는 것이라고 생각합니다. –
@ 브래드 하리스 : 그건 분명히 단점입니다. 동일한 시그니처를 유지하는 한 가지 방법은 중요하다고 생각되면 대신 매개 변수가있는 객체를 받아들이는 것입니다 :'{db : db, foo : foo, bar : bar}'. 해결책은 자신의 단점이 있기는하지만 명확한 해결책은 아닙니다. 단위 테스트는 어렵습니다. –