我對node.js相當陌生。Node.js:使控制器文件中的db變量可用
我目前使用lowdb爲我的數據庫,而我得到的應用程序啓動。
在index.js文件我有:
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');
});
在我的路線
接檔我有類似:
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;
最後,在我的帳戶控制我有:
exports.login = function(req, res){
var email = req.body.email;
var password = req.body.password;
...
}
到控制器系統的路由工作。不過,我需要從我的所有路由控制器函數(也可能在其他地方)訪問lowdb對象。
如果app.js我設置:
global.db = db;
然後好像工作,但是從我已閱讀,統一設置,這不是理想的解決方案。能夠從控制器文件訪問數據庫的適當方式是什麼,而不必在每個文件中設置數據庫連接。