nodejs express应用程序不会返回json数组

时间:2012-04-04 22:44:00

标签: javascript node.js redis

我有以下express node.js应用程序。它正在使用' redis' npm包。

app.get("/test",function(req,res){
    var data = [];
    client.HGETALL("receipts",function(err,obj){
        for(var id in obj){
            data.push(JSON.parse(obj[id]));
        }
    });
    console.log(data);
    res.json(data);
});

app.listen(3000);

代码运行没有错误;但是,当data变量返回浏览器时,[]变量为{{1}}。 browser

奇怪的是,当我从命令行运行相同的redis命令时,将填充该数组。

enter image description here

谁能告诉我这里发生了什么?

1 个答案:

答案 0 :(得分:9)

您的代码是异步的。您传递的回调在之后 console.log之后才会执行。尝试:

app.get("/test",function(req,res){
    var data = [];
    client.HGETALL("receipts",function(err,obj){
        for(var id in obj){
            data.push(JSON.parse(obj[id]));
        }
        console.log(data);
        res.json(data);
    });
});