我试图在快速服务器上沿着我的路线返回来自api的JSON数据。我对nodejs如何处理这种操作感到有些困惑。我在同一个文件中有一个函数和一个路由,路由可以工作,因为我得到了返回的视图,以及我想要的数据在控制台中。路线和方法如下所示:
function getData() {
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage.
return response.body;
};
});
};
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'About', data: getData() });
});
我希望在回复路线时来自getData()
的数据。我认为这样做会,但它只会将数据打印到控制台,我看不出问题。
答案 0 :(得分:4)
由于http请求的异步性质,这根本不可能。您必须重新构建它才能进行回调。
function getData(callback) {
request(url, function (error, response, body) {
if (error) {
return callback(error);
}
if (response.statusCode == 200) {
console.log(body) // Show the HTML for the Google homepage.
//return response.body;
callback(null, response.body);
} else {
callback(response.statusCode);
}
});
};
/* GET home page. */
router.get('/', function(req, res, next) {
getData(function (err, data) {
if (err) {
return next(err);
}
res.render('index', { title: 'About', data: data });
});
});