节点应用程序在收到JSON后崩溃,但在发送之前不会崩溃。

时间:2013-01-15 21:33:58

标签: javascript node.js

所以我有一个尝试创建的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");

2 个答案:

答案 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个参数,而不是一个。第一个是“结果”,第二个是“响应”对象。