Redis队列将列表中的项目存储为[object Object]

时间:2014-07-03 12:43:24

标签: javascript node.js curl redis node-redis

我使用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)" [对象]" 2)" [对象对象]" 。 。 我用这个curl命令传递数据,

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

我使用此命令使用另一个终端检查redis队列,

>lrange XMLqueue 0 -1

我该如何解决?

1 个答案:

答案 0 :(得分:1)

Redis只接受一些输入结构。 所以我们需要将JSON转换为字符串。所以我们使用

var p=JSON.stringify(post)