Я пытаюсь реализовать 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, чтобы иметь возможность быстрее получать пользователей а также я не знаю, имеет ли смысл, а также как это сделать для поста пользователя, например.