所以我有一个尝试创建的node.js应用程序,其中一部分是通过reddit的api和从URL获取JSON,将其存储在URL中并发送它收集的内容。它完成所有这些但是在发出它找到的对象数组后,应用程序崩溃并出现错误
TypeError: Cannot read property 'children' of undefined
这对我没有意义,因为它已经找到了这些值并将它们用于输出。知道什么可能是错的吗?
var express = require("express"),
restler = require("restler");
var app = express.createServer();
app.all('/:subreddit', function(req, res){
restler.get("http://www.reddit.com/r/"+ req.params.subreddit + ".json").on('complete', function(reddit){
var reddit_data = reddit.data.children;
var titles = new Array();
var i = 0;
while (i<5){
titles[i] = i+": " + reddit_data[i].data.title;
i++
}
res.send(titles);
});
});
app.listen(14042);
console.log("redSMS listening on 14042");
答案 0 :(得分:2)
问题是您将每个请求传递给Reddit。
如果浏览器转到,请说http://localhost/bmw
,快递会将其传递给reddit并显示http://www.reddit.com/r/bmw.json
的结果。到目前为止一切都很好。
然后浏览器执行它始终执行的操作,转到http://localhost/favicon.ico
,它传递给Reddit为http://www.reddit.com/r/favicon.ico.json
,提供404而没有结果。当您尝试访问该结果的children
时,您会崩溃。
答案 1 :(得分:1)
对“complete”事件处理程序的回调传递了2个参数,而不是一个。第一个是“结果”,第二个是“响应”对象。