将数据从节点js模块获取到server.js文件

时间:2014-04-15 21:38:30

标签: javascript json node.js express

我正在尝试从节点模块中的函数获取数据,该函数返回一个json对象,并在我的server.js文件中的路由器中显示json对象。

我试图像这样导出它:

    // Export the function
    exports.getTweets = function() {
        var tweetResult = {};
        twitter.get(
            '/statuses/user_timeline.json',
            { screen_name: 'twitter', count: 5},
            function (error, tweets) {
                tweetResult = tweets;
            }
        );
        return tweetResult;
    };

这是我的server.js文件,其中包含应返回json对象的路径

tweets      = require("./twitter_stream.js"),

// set up the route for the json object
app.get("/tweets.json", function (req, res) {
    console.log(tweets.getTweets());
});

除了空物之外,我还没有得到任何东西。

1 个答案:

答案 0 :(得分:1)

您需要将回调传递给getTwitter函数以接收推特结果。调用代码tweetResult时,变量return tweetResult; null

请检查以下代码,了解如何在代码中使用回调:

exports.getTweets = function(callback) {
        twitter.get(
            '/statuses/user_timeline.json',
            { screen_name: 'casperpschultz', count: 5},
            function (error, tweets) {
                //invoke the callback function passing the tweets  
                callback(tweets);

            }
        );
    };

调用getTweets函数传递回调函数的代码:

app.get("/tweets.json", function (req, res) {
    //invoke getTweets passing a callback function by parameter
    tweets.getTweets(function(tweets){
         console.log(tweets);
     });
});

Node.js以异步方式使用回调,here是一个很好的参考解释它。