Как реализовать Redis Cache с MongoDB? - PullRequest
0 голосов
/ 23 января 2019
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?

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