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

Mat*_*ips 1 javascript redis node.js

我有以下表达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);
Run Code Online (Sandbox Code Playgroud)

代码运行没有错误; 但是,data变量是[]它返回浏览器的时间. 浏览器

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

在此输入图像描述

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

dav*_*vin 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);
    });
});
Run Code Online (Sandbox Code Playgroud)