Подключение к Redis в приложении Express приводит к TypeError - PullRequest
0 голосов
/ 08 октября 2018

Я разрабатываю API с ExpressJS, где используется 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)

Чего не хватает?

...