У меня есть функция, которая ПОЛУЧАЕТ данные из кэша redis или mongodb или azure. Я пытаюсь установить его так, чтобы он сначала проверял кеш, а затем нажимал на mongodb, если кеш пустой, но по какой-то причине сначала выполняется код mongodb. Я создал обещание для обработки заказа, но оно дает мне необработанную ошибку отклонения обещания. У меня есть улов, поэтому я не понимаю, в чем проблема. Я ценю любую помощь!
консольный вывод
SETTING TRUE...
(node:27068) UnhandledPromiseRejectionWarning: Cache found
(node:27068) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise
which was not handled with .catch(). (rejection id: 1)
(node:27068) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero
exit code.
GET-запрос
const promise = new Promise((resolve, reject) => {
client.get("directory", (err, reply) => {
if (reply !== null) {
console.log("SETTING TRUE...");
redisReply = true;
replyConverted = JSON.parse(reply);
res.status(200).json({
message: "Directory retrieved successfully!",
posts: replyConverted,
maxPosts: replyConverted
});
reject("Cache found);
} else {
resolve();
}
});
}).then(res => {
const postPerPage = 20;
console.log("directory ID SECTION");
var searchKey = new RegExp(req.query.keyword, "i");
console.log("req.query.currentPage");
console.log(req.query.currentPage);
console.log(req.query.keyword);
let currentPage = req.query.currentPage;
console.log("REDIS RELY IS " + redisReply);
console.log("GRABBING FROM COSMOSDB");
User.countDocuments({
$and: [{ username: searchKey }, { role: "Seller" }]
})
.then(docs => {
console.log("COUNT");
console.log(docs);
let totalPosts = docs;
User.find({
$and: [{ username: searchKey }, { role: "Seller" }]
})
.select("_id username")
.skip(postPerPage * (currentPage - 1))
.limit(postPerPage)
.then(documents => {
res.status(200).json({
message: "Directory retrieved successfully!",
posts: documents,
maxPosts: totalPosts
});
let docsString = JSON.stringify(docs);
client.set("directory", docsString, (err, reply) => {
console.log(reply);
});
});
})
.catch(err => {
console.log("Skipped Mongodb");
});