title: Accessing http request objects outside the functions scope in Node.js
body: <p>I've got this code to make a request to an API</p>
  
  <pre><code>var request = require('request');
  
  
   request('http://www.google.com', function (error, response, body) {
   console.log('error:', error); // Print the error if one occurred
   console.log('statusCode:', response &amp;&amp; response.statusCode); // Print the response status code if a response was received
   console.log('body:', body); // Print the HTML for the Google homepage.
      });
  </code></pre>
  
  <p>However, I also a route to serve in my node app and the response I get is out of scope in the route. I want to add the values from my request into view using EJS but with EJS i have to define the values to be used by the file in the <code>.render()</code> and getting those values just seems to not be possible. </p>
  
  <p>My app.js looks like this</p>
  
  <pre><code>const express = require('express');
  var request = require('request');
  const path = require('path');
  const chalk = require('chalk');
  
  const app = express();
  const port = process.env.PORT || 3000; // Port number
  
  // var url = 'http://api.openweathermap.org/data/2.5/forecast?id=1253573&amp;APPID=56e2043a628c776ab619d9d393c2b568&amp;units=metric'; // API Request URL
  
  app.use(express.static(path.join(__dirname, '/public/')));
  app.use('/css', express.static(path.join(__dirname, '/node_modules/bootstrap/dist/css')));
  app.use('/js', express.static(path.join(__dirname, '/node_modules/bootstrap/dist/js')));
  app.use('/js', express.static(path.join(__dirname, '/node_modules/jquery/dist')));
  app.set('views', './views');
  app.set('view engine', 'ejs');
  
  
  function apiCall(callback) {
    request(url, function (error, response, body) {
      if (!error &amp;&amp; response.statusCode == 200) {
        var result = JSON.parse(body);
        // console.log(result);
        return callback(result, false);
      } else {
        return callback(null, error);;
      }
    });
  }
  
  app.get('/', (req, res) =&gt; {
    const url = 'http://api.openweathermap.org/data/2.5/forecast?id=1253573&amp;APPID=56e2043a628c776ab619d9d393c2b568&amp;units=metric'; // API Request URL
  
    const x = request(url, function (error, response, body){
    const result = JSON.parse(x.body);
    console.log(result);
  
    });
    res.render('index',{
        //temp: data.list[0].main.temp,
        place : result.city['name'] // || data.city['name'],
        //wind: data.list[0].wind.speed,
        //desc: data.list[0].weather[0].description,
        }
      );
      });
  
  app.listen(port, () =&gt; {
    console.log(`listening on port ${chalk.green(port)}`);
  });
  </code></pre>
  
  <p>any help would be really appreciated! </p>