我正在尝试使用node.js构建简单的天气应用程序。我想在单独的ejs文件中显示天气信息。
我在邮政路线中的代码如下所示:
app.post('/', (req, res) => {
var address = req.body.address;
location.getLocation(address, (error, results) => {
if(error) {
console.log(error);
} else {
fetchWeather.getWeather(results.latitude, results.longitude, (error,
weatherResults) => {
if(error){
console.log(error);
} else {
var temp = weatherResults.temperature;
var appTemp = weatherResults.apparentTemperature;
console.log(temp, appTemp);
}
});
}
});
res.redirect('weatherinfo');
});
我正在使用请求在单独的文件中获取数据:
var getWeather = (lat, lng, callback) => {
request({
url:`https://api.darksky.net/forecast/mycode/${lat},${lng}
?units=si`,
json: true
}, (error, response, body) => {
if (!error && response.statusCode === 200) {
callback(undefined, {
temperature: body.currently.temperature,
apparentTemperature: body.currently.apparentTemperature
});
} else {
callback('Unable to fetch weather.');
}
});
};
如何将温度和apparentTemperature导出到我的ejs文件?
答案 0 :(得分:2)
您可以将温度数据作为变量传递给视图:
app.post('/', (req, res) => {
var address = req.body.address;
location.getLocation(address, (error, results) => {
if(error) {
console.log(error);
} else {
fetchWeather.getWeather(results.latitude, results.longitude, (error, weatherResults) => {
if(error){
console.log(error);
} else {
var temp = weatherResults.temperature;
var appTemp = weatherResults.apparentTemperature;
res.render('pages/yourFile.ejs, {
temp: temp,
appTemp: appTemp
});
}
});
}
});
});
并在您的ejs文件中使用它们:
<p><%= temp %></p>
<p><%= appTemp %></p>
答案 1 :(得分:0)
如果您使用express-session之类的内容,则可以将数据存储在req.session
对象中,然后在文件中使用
如果您不需要在用户会话中保持持久性,则可以将数据存储在res.locals中,这些数据可被大多数快速查看引擎识别,例如EJS:
res.locals.temp = temp;
res.render('temp');
temp.ejs:
<% if (temp) { %>
<h2><%= temp %></h2>
<% } %>