Очередь Redis хранит элементы в списке как [object Object]

Я использую curl для отправки запросов POST в приложение node.js. Затем запрос POST обрабатывается и помещается в очередь Redis. Но когда я проверяю свою очередь Redis, все элементы в списке отображаются как [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);
        });
    }
});

Только «сообщение», которое я нажимаю дискретно, отображается правильно. В противном случае все элементы отображаются как 1)"[object Object]" 2)"[object Object]" . . Я использую эту команду curl для передачи данных,

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

Я проверяю очередь Redis с помощью другого терминала с помощью этой команды,

>lrange XMLqueue 0 -1

Как мне это решить?


person kevin.desai    schedule 03.07.2014    source источник
comment
Попробуйте var p = JSON.stringify(post) вместо var p = JSON.encode(post). У меня была похожая проблема в прошлом.   -  person Tom Grant    schedule 03.07.2014


Ответы (1)


Redis принимает только несколько входных структур. Итак, нам нужно преобразовать JSON в строку. Поэтому мы используем

var p=JSON.stringify(post)
person kevin.desai    schedule 04.07.2014