我正在尝试从节点模块中的函数获取数据,该函数返回一个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());
});
除了空物之外,我还没有得到任何东西。
答案 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是一个很好的参考解释它。