我正在尝试调用对API的REST调用并在视图上显示返回的数据,但我当前的代码似乎没有工作。我对node.js很新,所以我真的很感激一些帮助。
这是index.js的样子:
var router = require('express').Router();
function GetCompanyInformation() {
var request = require('request');
request('http://table.finance.yahoo.com/table.csv?s=orcl&a=0&b1&c=2010&d=0&e=1&f=2011&g=d&y=0&z=orcl', function (error, response, data) {
if (!error && response.statusCode == 200) {
return data;
}
return 'An error has occurred.'
})
}
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', {
title: 'Express',
data : GetCompanyInformation()
});
});
module.exports = router;
这是我的观点index.hbs(把手):
<h1>{{ title }}</h1>
<h1>{{ data }}</h1>
标题回来了。我只是不确定如何传递来自其余调用的数据。或者,如果我甚至正确地做到了。我的主要目标是进行休息调用并将返回的数据放在一个数组中,然后将数组传递给视图。
我只是举了一个雅虎金融休息电话。
非常感谢任何帮助!
答案 0 :(得分:1)
欢迎来到Nodejs,这里的一切都是异步的,这意味着你必须等待你的功能完成才能做某事,通常我们使用回调样式(例如其他选项是promises),代码示例:
function GetCompanyInformation(callback) {
var request = require('request');
request('http://table.finance.yahoo.com/table.csv?s=orcl&a=0&b1&c=2010&d=0&e=1&f=2011&g=d&y=0&z=orcl', function (error, response, data) {
if (!error && response.statusCode == 200) {
return callback(null,data);
}
return callback('An error has occurred.',null);
})
}
/* GET home page. */
router.get('/', function(req, res, next) {
GetCompanyInformation(function(err,data){
//if(err) Manage error ; console.log(err)
//else
console.log(data)
res.render('index', {
title: 'Express',
data : data
});
});
});