2014-07-03 6 views
0

J'utilise curl pour envoyer des requêtes POST à ​​mon application node.js. La demande POST est ensuite traitée et transmise à une file d'attente Redis. Mais quand je vérifie ma file d'attente Redis, tous les éléments de la liste sont affichés en tant que [Object Object]. Voici mon code,La file d'attente Redis stocke les éléments dans la liste en tant que [object Object]

var http = require('http'); 
var qs = require('querystring'); 
var redis = require('redis').createClient(); 

redis.lpush('XMLqueue','post'); 

console.log('Server Starting Now: '); 

http.createServer(function (req, res) { 

    //res.writeHead(200, {'Content-Type': 'text/plain'}); 
    //res.end('Hello World\n'); 

    if(req.method == 'POST'){ 

     var body=""; 

     req.on('data', function(data){ 
      body += data; 
     }); 

     req.on('end',function(){ 
      var post = qs.parse(body); 
      console.log(post); 

      //var p = post.toString(); 
      var p = JSON.encode(post); 
      redis.lpush('XMLqueue',p); 
     }); 
    } 
}); 

seulement 'post' que je pousse est correctement affichée discrètement. Sinon, tous les éléments sont affichés sous la forme 1) "[objet objet]" 2) "[objet objet]" . . J'utilise cette commande boucle pour transmettre des données,

curl --data "What=Hello&world=name" http://127.0.0.1:8124 

Je vérifie la file d'attente à l'aide d'un autre terminal Redis avec cette commande,

>lrange XMLqueue 0 -1 

Comment puis-je le résoudre?

+0

Essayez 'var p = JSON.stringify (post)' au lieu de 'var p = JSON.encode (post)'. J'ai eu un problème similaire dans le passé. –

+0

Oui, c'est seulement! –

Répondre

1

Redis n'accepte que quelques structures d'entrée. Nous devons donc convertir JSON en chaîne. Nous utilisons donc

var p=JSON.stringify(post) 
Questions connexes