来自redis缓存的数据没有分页

nkkqxpd9  于 2021-06-07  发布在  Redis
关注(0)|答案(1)|浏览(434)

在我在后端api中实现redis cache之前,分页在后端和前端都工作得很好,在缓存数据之后,它就不再工作了。这是我在获取所有数据之前运行的中间件

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);
  }

如何从缓存返回分页结果?

hfwmuf9z

hfwmuf9z1#

您只需将页码添加到键中即可( 'page' + req.query.page ),然后每页都有缓存
顺便说一句,你有一个错误在 checkCache 中间件:如果有错误,您可以同时调用 sendFailureResponse 以及 next 函数,您将得到“err\u stream\u write\u after\u end”错误

相关问题