快速路由 - 在路由内调用路由

时间:2016-11-15 14:34:36

标签: express routing

我有一个获取数据(标题和条目)的register.pug的获取路径。

// GET /register.pug
router.get('/register', function(req, res, next) {
  res.render('register', {
    title: 'Register', 
    countries: [] //countries
  });
});

我还有一条从我的数据库中检索contries的路线,我可以用它来获取上面的渲染的“国家/地区”数据吗?

// GET /contries
router.get("/", function(req, res){

    //Result from Sequelize query
    var contries = [{
        name: Denmark,
        ISO: DK
    }, {
        name: Sweden,
        ISO: SE
    }];

    res.status(200).send(contries);
});

1 个答案:

答案 0 :(得分:0)

据我所知,你不能直接使用这些值,因为它在另一个函数中。

您可以创建一个中间件函数,该函数从数据库中获取国家/地区,并使用下一个函数随后使用countries对象调用您的路由:

app.use(function(req, res, next) {
    // how I imagine the sequelize call
    Country.findAll().then(function(countries) {
        next(countries);
    });
});

app.get('/register', function(countries, req, res, next) {
    res.render('register', {
        title: 'Register', 
        countries: countries
    };
});

app.get('/', function(countries, req, res, next) {
    res.status(200).send(contries);
});

此外,如果您尝试将国家/地区作为json发送,则在“/”路由中,您可能希望使用json函数而不是sendhttp://expressjs.com/en/api.html#res.json