我是Node和Javascript的新手。我正在使用请求模块从Web服务获取JSON响应。我不确定是否最好将我的请求转换为函数,或者将请求嵌入到另一个函数中。无论如何我都没有运气。
// Module imports
var express = require('express');
var router = express.Router();
var request = require('request');
var options = {
url: 'https:www.example.com/wow.json',
auth: {
user: 'user',
password: 'pass',
json: true
}
}
request(options, function (err, res, body) {
if (err) {
console.log(err);
return;
}
requestResult = JSON.parse(body); // All data
wowUsage = requestResult.publishers[0].used;
});
// Sending data to the template view
router.get('/', function(req, res, next) {
res.render('template', {tempVar: wowUsage});
});
module.exports = router;
每当我启动我的Web服务器时,此代码执行一次,然后就完成了。刷新页面不会加载任何新信息。我应该在一个函数中嵌入请求,然后在我的router.get语句中调用该函数吗?我试图将请求嵌套在一个函数中,但我根本无法完成这项工作。
答案 0 :(得分:2)
如果将请求放在单独的函数中,请确保将callback参数添加到使用适当数据调用的新函数中。例如:
function getJSON(callback) {
request(options, function(err, res, body) {
if (err)
return callback(err);
try {
callback(null, JSON.parse(body).publishers[0].used);
} catch (ex) {
callback(ex);
}
});
}
router.get('/', function(req, res, next) {
getJSON(function(err, wowUsage) {
if (err) {
console.log(err.stack);
return res.status(500);
}
res.render('template', {tempVar: wowUsage});
});
});