在expressionjs res.render之前,使http请求获取JSON

如何使http请求从远程服务器获取数据,然后将请求的数据作为快速js中的查看数据传递?

例如代码,其中视图与静态数据呈现:

var express = require('express'); var router = express.Router(); var news = [{id: 1, title: 'News title'}]; router.get('/', function(req, res, next) { res.render('index', { title: 'Main page', news: news }); }); module.exports = router; 

例如,使用request

 var request = require('request'); router.get('/', function(req, res, next) { request(URL, function (err, response, body) { if (err || response.statusCode !== 200) { return res.sendStatus(500); } res.render('index', { title : 'Main page', news : JSON.parse(body) }); }); }); 

要执行多个请求,可以使用async.map()

 var request = require('request'); var async = require('async'); router.get('/', function(req, res, next) { var URLS = [ 'http://...', 'http://...', ... ]; async.map(URLS, function(url, done) { request(url, function (err, response, body) { if (err || response.statusCode !== 200) { return done(err || new Error()); } return done(null, JSON.parse(body)); }); }, function(err, results) { if (err) return res.sendStatus(500); res.render('index', { title : 'Main page', news : results }); }); });