2017-12-31 33 views
-1

Ich baue gerade eine Express-App mit dem Anforderungsmodul, das Daten von einer API abruft. Ich möchte diese Daten jedoch an eine Funktion res.render übergeben, ohne eine globale Variable zu erstellen. Auch wenn Sie den globalen Befehl erstellen, wird console.log zuerst aktualisiert, bevor die Ansicht auf der Site aktualisiert wird. Ich frage mich nur, wie ich das machen soll und die Daten an die Funktion res.render übergeben soll. Vielen Dank.Zugriff auf Variablen ohne globales Expressanforderungsmodul

var pounds = {}; 


exports.index = function(req, res) { 
request(options, function(err, res, body) { 
if (!err && res.statusCode === 200) { 
let info = JSON.parse(body); 
pounds = ("£"+info.GBP); 
console.log(pounds) 

}; 
}); 
res.render('pages/index', {british: pounds}); 

Antwort

0

einfach Ihren Anruf innerhalb den inneren Rückruf, um res.render zu bewegen und eine lokale Variable verwenden. Achten Sie auch darauf, Ihre äußere res nicht mit einer inneren zu beschatten (ich habe die innere response unten umbenannt).

exports.index = function(req, res) { 
    request(options, function(err, response, body) { 
     if (!err && response.statusCode === 200) { 
      let info = JSON.parse(body); 
      let pounds = "£" + info.GBP; 
// Local -------^ 
      res.render('pages/index', { // Moved to within 
       british: pounds   // the inner 
      });       // callback 
     }; 
    }); 
}; 
+0

@ tj-crowder Dank für Ihre Antwort Tj, wird werfen es dann aber diesen Fehler Typeerror: res.render keine Funktion – zak

+0

@zak ist: Ah, ich habe Sie Ihre äußere 'res nicht bemerken beschattet 'mit einem inneren. Benenne einfach einen von ihnen um. Ich habe das obige aktualisiert, um das innere umzubenennen. –

+1

@ t-j-crowder Legende vielen Dank !! – zak

Verwandte Themen