1

我有以下 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变量是[]返回给浏览器的时间。 浏览器

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

在此处输入图像描述

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

4

1 回答 1

10

您的代码是异步的。你传递的回调直到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);
    });
});
于 2012-04-04T22:46:42.263 回答