Node.js 将API数据请求到Express view中

Node.js 将API数据请求到Express view中,node.js,express,ejs,Node.js,Express,Ejs,我是新手。我正试图将通过API调用(当用户请求zoopla页面时)收到的数据发送到index.ejs视图中。我试图通过在res.render中传递graph\u url来传递它 graph\u url记录正确,因此API调用将返回,但我的终端中出现以下错误: ReferenceError: graph_url is not defined 以下是我对该页面的index.js请求: app.get('/zoopla', function(req, res){ request(zoopla,

我是新手。我正试图将通过API调用(当用户请求zoopla页面时)收到的数据发送到
index.ejs
视图中。我试图通过在
res.render
中传递
graph\u url
来传递它

graph\u url
记录正确,因此API调用将返回,但我的终端中出现以下错误:

ReferenceError: graph_url is not defined
以下是我对该页面的
index.js
请求:

app.get('/zoopla', function(req, res){
  request(zoopla, function(err, res, data){
    var data = JSON.parse(data);
    var graph_url = data.area_values_url
    console.log(graph_url);
  });
  res.render('index', { title : "zoopla", graph : graph_url});
});

未定义
graph\u url
,因为它不在本地范围内,而且您正在尝试在上一个异步
request()
调用完成之前呈现页面

尝试:

app.get('/zoopla', function(req, res){
  request(zoopla, function(err, res, data){
    if (err) {
       /* handle errors */
    }

    var data = JSON.parse(data);
    var graph_url = data.area_values_url
    console.log(graph_url);
    res.render('index', { title : "zoopla", graph : graph_url});
  });
});

Javascript是异步的。您需要将渲染函数放入请求回调中。