Node.js Redis lpush 错误

Posted

技术标签:

【中文标题】Node.js Redis lpush 错误【英文标题】:Node.js Redis lpush error 【发布时间】:2014-08-27 18:45:57 【问题描述】:

我正在使用 node.js 和 redis 制作一个网络应用程序。 我想在将每个传入请求推送到数据库之前将其推送到 redis 队列中。 但是每次程序到达 lpush 命令时都会出错。 这是我的 index.js 代码,

var express = require('express');
var app=express();
var http = require('http').Server(app);
var io=require('socket.io')(http);
var qs=require('querystring');
var redis=require('redis');
var client = redis.createClient();
var count=0;
var parseString = require('xml2js').parseString;
//var countm=1;
//var counte=1;

app.get('/adminm', function(req, res)
  res.sendfile('adminmovies.html');
);

app.get('/admine', function(req, res)
  res.sendfile('adminevents.html');
);

app.post('/', function(req,res)
    count=count+1;
    var body="";
    req.on('data',function(data)
    body+=data;
    );
    req.on('end',function()
    console.log(body);
    var xml=body;
    var parsed="";
    parseString(xml, function(err,result)
        console.dir(result);
        parsed=result;
    );
    //var post=qs.parse(body);
    io.emit('count1',count);
    redis.lpush('events',parsed);
    //console.log(post);

    );


);

/*io.on('connection',function(socket)

);*/


http.listen(3000, function()
  console.log('listening on *:3000');
);

错误是,

TypeError: undefined is not a function
    at IncomingMessage.<anonymous> (/home/kevin/Desktop/express-app/index.js:37:8)
    at IncomingMessage.emit (events.js:104:17)
    at _stream_readable.js:902:16
    at process._tickCallback (node.js:343:11)

我该如何解决?

【问题讨论】:

【参考方案1】:

您正在创建 redis 客户端,但没有在任何地方使用它。

在第 37 行,您直接在导入的模块上调用 lpush

 redis.lpush('events',parsed);

lpush 未定义。

【讨论】:

以上是关于Node.js Redis lpush 错误的主要内容,如果未能解决你的问题,请参考以下文章

“使用Node.js在AWS ElastiCach(Redis)上无法获得插槽分配”错误

Node.js 和 socket.io 的 Redis 身份验证错误

Python操作redis系列之 列表(list)

使 Node.js Redis 客户端的 .multi() 和 .batch() 在结果中返回错误以进行测试

redis jedis lpush为啥加前缀

Redis:list/lpush/lrange/lpop 命令源码解析