const redis = require('redis');
const getAsync = promisify(client.get).bind(client);
router.get('/get_all', async (req, res) => {
let language = req.query.language;
let data = '';
try {
data = await getAsync(language);
}
catch (err) {
console.log(err);
}
if (data) {
console.log('Data is received from Redis Cache!');
res.send(data);
}
else {
try {
const result = await Users.find({
language: language
});
client.setex(language, 86400, JSON.stringify(result));
res.send(result);
}
catch (err) {
console.log('ERROR');
console.log('MONGO DB RETURNED THE FOLLOWING ERROR');
console.log(err);
res.end();
}
}
}
Вот так я реализовал кэш redis с помощью mongod db.
* Это правильный способ реализации?
Если это не так, скажите, пожалуйста, как реализовать.
Одна проблема, с которой я сталкиваюсь сейчас, заключается в том, что, если я добавлю блок try и catch в const data = await getAsync (language);
Я получаю ошибку.
UnhandledPromiseRejectionWarning: необработанное отклонение обещания.Эта ошибка> возникла либо в результате выброса внутри асинхронной функции без блока catch>, либо в результате отклонения обещания, которое не было обработано с помощью .catch ().> (id отклонения: 2)
Исправлен код с двумя блоками try и catch.
Это хороший способ реализовать redis с mongo?