node.js 内的 REST 调用来自路由目录中的 js 文件

REST Call within node.js express from js file in route directory

我正在尝试调用 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>

标题恢复正常。我只是不确定如何从 rest 调用传递数据。或者如果我什至正确地做它。我的主要目标是进行 rest 调用并将返回的数据放入数组中,然后将数组传递给视图。

我添加了雅虎财经休息电话只是为了举例。

非常感谢任何帮助!

欢迎使用 Nodejs,这里的一切都是异步的,这意味着你必须等待你的函数完成才能做某事,通常我们使用回调风格(例如其他选项是承诺),代码示例:

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
        });
    });
});