在app.js和路由之间共享一个对象y node.js

时间:2017-05-05 18:33:38

标签: node.js express

这是我的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()的用法是否正在创建这个问题(注意在路由之前设置中间件并没有解决这个问题)

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到:

1.在声明中间件之前使用app.use('/', routes);变量。

2.或直接在顶部var model = require('./models/my_model');的routes / index.js中声明my_model

并在router.get()中使用。

3.或者更好地使用MVC架构。