代码之家  ›  专栏  ›  技术社区  ›  cogitoergosum

在Express应用程序中连接到Redis会导致类型错误

  •  0
  • cogitoergosum  · 技术社区  · 8 年前

    我正在用ExpressJS开发一个API,其中使用redis存储一些“初始”信息。我在里面建了游泳池 redispools.js 如下图所示。

    var redisPool = require('redis-connection-pool');
    //
    var pool0 = redisPool('A', { database: 0 });
    var pool1 = redisPool('B', { database: 1 });
    var pool2 = redisPool('C', { database: 2 });
    //
    pool0.on('error', function(err) {console.log(err)});
    pool1.on('error', function(err) {console.log(err)});
    pool2.on('error', function(err) {console.log(err)});
    //
    var pools = { A: pool0, B: pool1, C: pool2 };
    module.exports = pools;
    

    在 lookup.js 我有以下几点:

    var express = require('express');
    var router = express.Router();
    var redisPools = require('../app/redispools');
    
    // Process payload
    router.post('/process/*', function (req, res, next) {
      var redisConfigConn = redisPools.A
      redisConfigConn.set('key', req.body, function (err) {
        if (err) {
          console.log(err);
        } else {
          console.log('Redis inserted.')
        }
      });
      var resp = {
        'IP-Address': req.ip,
        'Path': req.path
      }
      res.status(200);
      res.send(resp);
    });
    
    module.exports = router;
    

    一旦开始 pm2 ,我在日志中有:

    TypeError: Cannot read property 'name' of undefined
        at RedisClient.internal_send_command (/home/ubuntu/code/src/server/node_modules/redis/index.js:914:128)
        at RedisClient.set (/home/ubuntu/code/src/server/node_modules/redis/lib/commands.js:58:25)
        at pool.acquire.then (/home/ubuntu/code/src/server/node_modules/redis-connection-pool/src/redis-connection-pool.js:523:23)
        at <anonymous>
        at process._tickCallback (internal/process/next_tick.js:189:7)
    

    缺少什么?

    0 回复  |  直到 8 年前
    推荐文章