nodejs demande expresse de ne pas revenir tableau json
J'ai le texte suivant express node.js app. C'est à l'aide de la "redis' package 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);
Le code de la course sans erreurs; cependant, la data
variable est []
quand il est renvoyé au navigateur.
La partie étrange, c'est que quand je lance le même redis commandes à partir de la ligne de commande, le tableau est rempli.
Quelqu'un peut me dire ce qu'il se passe ici?
Vous devez vous connecter pour publier un commentaire.
Votre code est asynchrone. La fonction de rappel vous passer n'obtient pas exécutée jusqu'à ce que après votre
console.log
. Essayez:res.send(data)
et j'ai essayé de le mettre à l'intérieur de la fonction de rappel. Mais depuis que c'était faux aussi, je n'ai pas vu que c'était la solution. merci!!!!.send()
utilise du texte/html et.json()
utilise json en-têtes. Combien c'est important dépend de votre cas d'utilisation, je suppose..json()
semble la plus naturelle. De toute façon vous ne pouvez les exécuter à la fin de la fonction de rappel. Prendre soin.