Before I implemented Redis cache in my backend api, pagination was working fine on the backend and on the frontend, after caching the data, it does not work any longer. Here is my middleware that runs before I get all data
const checkCache = (req, res, next) => {
client.get("posts", (err, data) => {
if (err) {
console.log(err);
sendFailureResponse(res, 500, err);
}
if (data != null) {
sendSuccessResponse(res, 200, JSON.parse(data));
} else {
//proceed to next middleware function
next();
}
});
};
The controller
const page = parseInt(req.query.page);
const size = parseInt(req.query.size);
const query = {};
if (page < 0 || page === 0) {
sendFailureResponse(res, 400, "invalid page number")
}
query.skip = size * (page - 1);
query.limit = size;
const posts = await Post.find({}, {}, query).populate("user", ["name"]);
client.setex("posts", 3600, JSON.stringify(posts))
sendSuccessResponse(res, 200, posts);
} catch (err) {
sendFailureResponse(res, 500, err.message);
}
How can I return the paginated result from the cache?