Я проходил этот продвинутый курс NodeJS от Стивена Гриндера, где мы тестировали кэширование в Redis.
Когда я запускаю свое приложение и достигаю заданного маршрута, меня выдает эта ошибка
Предупреждение об устаревании: Mongoose: mpromise (обещание по умолчанию для mongoose)
библиотека) устарела, вместо нее подключите свою собственную библиотеку обещаний:
http://mongoosejs.com/docs/promises.html
И еще один, который выглядит так
UnhandledPromiseRejectionWarning: необработанное отклонение обещания. это
ошибка возникла либо при броске внутри асинхронной функции
без блокировки, или отклонив обещание, которое не было обработано
с .catch (). (идентификатор отклонения: 1) [0] (узел: 11896) [DEP0018]
DeprecationWarning: Отклонения необработанных обещаний устарели В
будущее, обещания отклонения, которые не обрабатываются, прекратят
Процесс Node.js с ненулевым кодом выхода. [0] подача из MongoDb
Теперь, как уже упоминалось, я прошел и очень смутно посмотрел на него, и кажется, что их документация не говорит об асинхронности и ожидания.
Это маршрут API, который выдает ошибку
app.get('/api/blogs', requireLogin, async (req, res) => {
const redis = require('redis')
const redisURL = 'redis://127.0.0.1:6379';
const client = redis.createClient(redisURL);
const util = require('util')
client.get = util.promisify(client.get)
const cachedBlog = await client.get(req.user.id)
if (cachedBlog) return res.send(JSON.parse(cachedBlogs))
console.log("serving from MongoDb")
const blogs = await Blog.find({_user: req.user.id})
client.set(req.user.id, JSON.parse(blogs))
res.send(blogs);
});
Конкретнее здесь эта строка
const blogs = await Blog.find({_user: req.user.id})
Где
const Blog = mongoose.model('Blog');
Примечание. Чтобы объяснить кеш в двух словах, Стивен Гриндер специально установил его в корне.
[Вопрос:] Может кто-нибудь сказать, пожалуйста, как я могу использовать async / await (как то, что я сейчас делал внутри маршрута) без каких-либо ошибок?