在我在后端 api 中实现 Redis 缓存之前,分页在后端和前端工作正常,在缓存数据后,它不再工作。这是我在获取所有数据之前运行的中间件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(); } });};控制器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); }如何从缓存中返回分页结果?
1 回答
慕后森
TA贡献1802条经验 获得超5个赞
您只需将页码添加到键 ( 'page' + req.query.page
) 中,然后您将获得每页的缓存
顺便说一句,中间件中有一个错误checkCache
:如果出现错误,您调用sendFailureResponse
和next
函数,您将收到“ERR_STREAM_WRITE_AFTER_END”错误
添加回答
举报
0/150
提交
取消