Как использовать Redis с NodeJS, чтобы получить всех пользователей из БД - PullRequest
1 голос
/ 25 марта 2020

Я пытаюсь реализовать Redis внутри моего NodeJS API, но у меня возникают проблемы с этим. Я пытаюсь сделать Redis для конечной точки, которая служит ответом всем пользователям. Я получаю эту ошибку от своего applicationnode_redis:

The GET command contains a invalid argument type of \"undefined\".\nOnly strings, dates and buffers are accepted. Please update your code to use valid argument types.:

Я пытался таким образом из подключения к промежуточному программному обеспечению:

import redis from 'redis';
import { redisConfig } from '../config';
import Logger from './logger';

// Redis default port === 6379
const REDIS_PORT = redisConfig.port || 6379;

// Connect to redis
const client = redis.createClient(REDIS_PORT);

// Check connection
client.on('connect', () => {
  Logger.info('Connected to Redis');
});

client.on('error', () => {
  Logger.error('Redis not connected');
});

export default client;

Затем, используя это выше в моем контроллере:

import Client from '../loaders/redis';
const UserController = {
  async getAllUsers(req, res, next) {
    try {
      const users = await DB.User.find({});
      if (!users) {
        Logger.error('User was not found');
        return res.status(404).send('Nothing found');
      }
      // Set users to redis
      await Client.setex(users, 3600, users);

      Logger.info('All the users were found');
      return res.status(200).send(users);
    } catch (err) {
      Logger.error(err);
      return next(err);
    }
  },}

Промежуточное программное обеспечение:

import Client from '../loaders/redis';

// Cache middleware
const cache = (req, res, next) => {
  const { users } = res;
  Client.get(users, (error, cachedData) => {
    if (error) throw error;
    if (cachedData != null) {
      res.send(users, cachedData);
    } else {
      next();
    }
  });
};

export default cache;

Маршрут:

import Controller from '../controllers';
import cache from '../middleware/cacheMiddle';

app.get('/users', cache, Controller.UserCtrl.getAllUsers);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...