Ich bin ziemlich neu in node.js.Node.js: db-Variable in Controller-Dateien verfügbar
Ich verwende derzeit Lowdb für meine Datenbank, während ich die App starte.
In den index.js Datei Ich habe:
var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var request = require('request');
var path = require('path');
var low = require('lowdb');
var db = low('db.json');
var routes = require('./routes');
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
app.use(express.static(path.join(__dirname, '/public')));
app.use('/', routes);
server.listen(3000, function(){
console.log('listening on port 3000');
});
Dann in meine Routen-Datei Ich habe so etwas wie:
var express = require('express');
var router = express.Router();
var account = require('./controllers/accounts.js');
router.post('/login', account.login);
router.get('/', function(req, res){
res.render('home');
});
module.exports = router;
Und schließlich in meinem Konto Controller ich habe:
exports.login = function(req, res){
var email = req.body.email;
var password = req.body.password;
...
}
Das Routing zu Controller-System funktioniert. Allerdings muss ich von allen meinen gerouteten Controller-Funktionen (und möglicherweise auch woanders) auf das Lowdb-Objekt zugreifen.
Wenn in app.js I gesetzt:
global.db = db;
Dann scheint es zu funktionieren, aber von dem, was ich gelesen habe, diese global Einstellung ist nicht die ideale Lösung. Was ist der geeignete Weg, um von den Controller-Dateien auf die db zugreifen zu können, ohne die db-Verbindung in jeder einzelnen Datei setzen zu müssen.