Ich benutze ExpressJs mit Node.js und habe alle meine Routen in einen 'routes' Ordner gelegt.ExpressJS und Übergabe von Variablen zwischen separaten Routendateien
Auf dem Server kann ich eine DB-Verbindung, dann meine Routen definieren, wie folgt aus:
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);
}
});
});
ich den ‚db‘ Objekt innerhalb jeder dieser Routen JavaScript-Dateien zugreifen möchten. Wie würde ich das von dieser 'app.js' Datei an die index.js oder users.js weitergeben?
Vielen Dank!
Der Nachteil ist jetzt jedes Mal, wenn Sie ein "Modul" über Controller hinweg wiederverwenden möchten, müssen Sie es der Signatur hinzufügen, und Sie können mit Situationen enden, in denen einige Controller 2 benötigen, einige 3 und einer 5, und jetzt hast du eine Signatur, die dem größten gemeinsamen Nenner gerecht werden muss. Ein besserer Ansatz, denke ich, würde sein db-Verhalten in einem lose gekoppelten eigenen Modul kapseln. –
@BradHarris: Das ist definitiv ein Nachteil. Eine Möglichkeit, dieselbe Signatur beizubehalten, wenn Sie das für wichtig halten, ist, stattdessen ein Objekt mit Parametern zu akzeptieren: '{db: db, foo: foo, bar: bar}'. Ihre Lösung ist definitiv kein schlechter Weg, um es zu lösen, obwohl es mit eigenen Nachteilen verbunden ist - es ist schwieriger, Unit-Test, zum einen. –