NodeJS 如何使用查询在代码示例中集成分页

lymgl2op  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(157)

如何让每页的项目工作,当前和下一页的功能为这段代码工作,以及如何使用sequelize从后端获取相关数据块?

// controller
const getdailyExpense = async (req, res) => {
  try {
    const response = await dailyExpense.findAll({
      where: { UserId: req.authUser.id },
    });
    res.json(response);
  } catch (error) {
    console.log("error in getdailyexpense controller");
  }
};

// FrontEnd
document.addEventListener("DOMContentLoaded", async () => {
  const token = localStorage.getItem("token");
  const decodeToken = parseJwt(token);
  // console.log(decodeToken);
  const response = await axios.get("http://localhost:3000/dailyExpense", {
    headers: { Authorization: token },
  });
  // I want to add pagination for this one
  response.data.forEach((element) => {
    onScreenFunction(element);
  });
  const ispremiumuser = decodeToken.ispremiumuser;
  // console.log({ decodeToken, ispremiumuser });
  if (ispremiumuser) {
    showPremiumuserMessage();
    showLeaderboard();
    showDownloadBtn();
    showPeriodicBtn();
  }
});

我试着从stackoverflow得到结果:有人关闭了我以前的问题,没有给什么是如此不清楚,这就是为什么再次张贴:(

ijnw1ujt

ijnw1ujt1#

// controller
const getdailyExpense = async (req, res) => {
  try {
    let page = Number(req.query.page) || 1;
    let limit = parseInt(req.query.limit) || 10;
    let offset = (page - 1) * limit;

    const response = await dailyExpense.findAll({
      where: { UserId: req.authUser.id },
      limit: limit,
      offset: offset
    });
    res.json(response);
  } catch (error) {
    console.log("error in getdailyexpense controller");
  }
};
  • 定义名为page的变量,并从请求对象req.query.page中为page查询参数赋值,默认值为page 1。
  • 定义一个名为limit的变量来设置页面上的记录数量,默认为10条。
  • 偏移量用于确定要从数据库中提取的记录的起始点。
  • findAll()方法中还指定了limitoffset选项,以控制要获取的记录数。

相关问题