Express: Jak przekazać instancję aplikacji do tras z innego pliku?

Chcę podzielić moje trasy na różne pliki, gdzie jeden plik zawiera wszystkie trasy, a drugi odpowiadające im akcje. Obecnie mam rozwiązanie, aby to osiągnąć, jednak muszę sprawić, aby instancja aplikacji była globalna, aby móc uzyskać do niej dostęp w akcjach. Moja obecna konfiguracja wygląda tak:

app.js:

<code>var express   = require('express');
var app       = express.createServer();
var routes    = require('./routes');

var controllers = require('./controllers');
routes.setup(app, controllers);

app.listen(3000, function() {
  console.log('Application is listening on port 3000');
});
</code>

routes.js:

<code>exports.setup = function(app, controllers) {

  app.get('/', controllers.index);
  app.get('/posts', controllers.posts.index);
  app.get('/posts/:post', controllers.posts.show);
  // etc.

};
</code>

controllers / index.js:

<code>exports.posts = require('./posts');

exports.index = function(req, res) {
  // code
};
</code>

controllers / posts.js:

<code>exports.index = function(req, res) {
  // code
};

exports.show = function(req, res) {
  // code
};
</code>

Jednak ta konfiguracja ma duży problem: mam instancję bazy danych i aplikacji, które muszę przekazać do akcji (kontrolery / *. Js). Jedyną opcją, jaką mogłem wymyślić, jest uczynienie obu zmiennych globalnymi, co nie jest rozwiązaniem. Chcę oddzielić trasy od akcji, ponieważ mam wiele tras i chcę je w centralnym miejscu.

Jaki jest najlepszy sposób na przekazanie zmiennych do akcji, ale oddzielenie akcji od tras?

questionAnswers(6)

yourAnswerToTheQuestion