这是我的app.js
var express = require('express');
...
var model = require('./models/my_model');
var routes = require('./routes/index');
var app = express();
app.use('/', routes);
var middlewareBefore = function(req, res, next){
my_model.getName(function(err, result){
if(err){
console.log(err);
res.redirect('/error');
}else{
console.log(result);
next();
}
})
}
app.use(middlewareBefore);
...
module.exports = app;
这是我的routes / index.js文件
var express = require('express');
var router = express.Router();
router.get('/', function(req, res, next) {
res.render('login', { url: my_model.getUrl() });
});
module.exports = router();
我试图从路径文件中访问my_model。我已经尝试过使用app.locals,res,req,res.locals和app.use(' /',routes)(my_model),如此页面的不同问题所示,但是它们似乎都没有工作......我想知道express.Router()的用法是否正在创建这个问题(注意在路由之前设置中间件并没有解决这个问题)
答案 0 :(得分:0)
有几种方法可以做到:
1.在声明中间件之前使用app.use('/', routes);
变量。
2.或直接在顶部var model = require('./models/my_model');
的routes / index.js中声明my_model
并在router.get()中使用。
3.或者更好地使用MVC架构。