来自 Redis 缓存的数据未分页

在我在后端 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);

  }

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


翻翻过去那场雪
浏览 32回答 1
1回答

慕后森

您只需将页码添加到键 (&nbsp;'page' + req.query.page) 中,然后您将获得每页的缓存顺便说一句,中间件中有一个错误checkCache:如果出现错误,您调用sendFailureResponse和next函数,您将收到“ERR_STREAM_WRITE_AFTER_END”错误
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript