在表达js res.render之前,让http请求获取JSON

时间:2015-08-12 09:27:46

标签: node.js express

如何使http请求从远程服务器获取数据,然后将请求的数据作为快捷j中的视图数据传递?

例如,使用静态数据呈现视图的代码:

ggplot(mod, aes(x=as.factor(clusteringDistance), y=(value) ,   fill=as.factor(type)  )   ) + 
  stat_summary( fun.y=mean, geom="bar", width=0.8, position=position_dodge(width = 0.90) ) +
  facet_grid(direction ~ ., scales="free_y")

1 个答案:

答案 0 :(得分:4)

例如,使用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 });
  });
});