收到JSON后节点应用程序崩溃,但在发送之前不会。
所以我有一个node.js应用程序试图创build,其中的一部分是到达reddit的api,从一个url获取JSON,将其存储在一个URL中,并发送它收集的东西。 它完成了所有这些工作,但是在发出find的对象数组之后,应用程序崩溃了
TypeError: Cannot read property 'children' of undefined
这对我来说没有任何意义,因为它已经find了这些值,并将它们用于输出。 任何想法可能是错的?
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");
问题是,你把每个请求,并将其传递给Reddit。
如果浏览器转到http://localhost/bmw
,express会将其传递给reddit,并显示http://www.reddit.com/r/bmw.json
的结果。 到现在为止还挺好。
然后,浏览器做它总是做的,去http://localhost/favicon.ico
传递给Reddit作为http://www.reddit.com/r/favicon.ico.json
,给出了404,没有结果。 当你试图访问那个结果的children
时,你会得到崩溃。
“完成”事件处理程序的callback传递2个参数,而不是一个。 第一个是“结果”,第二个是“回应”对象。