我有以下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}}。
奇怪的是,当我从命令行运行相同的redis命令时,将填充该数组。
谁能告诉我这里发生了什么?
答案 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);
});
});