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

我有以下expressionnode.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); 

代码运行没有错误; 但是,返回给浏览器的datavariables是[]浏览器

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

在这里输入图像描述

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

你的代码是asynchronous的。 您传递的callback不会您的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); }); });