如何使用express在GET方法中实现分页?

时间:2019-07-08 16:16:31

标签: node.js typescript express pagination

我对如何在GET方法中实现分页系统很感兴趣,但是我不知道该怎么做。

任何帮助将不胜感激。

在以下json方案中,我希望您向我显示与该页面相关的信息,例如:实际页面,下一页,总页面等...

我想使用url中的&page = 1来引用页面

Json

{
  "animes": [
    {
      "title": "",
      "id": "",
      "poster": "",
      "type": "",
      "synopsis": "",
      "state": ""
    },
   ]
}

路由器

import * as scraper from './scraper';
import * as express from 'express';
const router = express.Router();

router.get('/latest', (req: express.Request, res: express.Response) => {
  scraper.lastAnimesAdded()
    .then(animes => {
      res.status(200).json({
        animes
      });
    }).catch((err) =>{
      console.log(err)
    });
});

分页器

export const paginator = (items, page, per_page) => {
  var page = page || 1,
  per_page = per_page || 10,
  offset = (page - 1) * per_page,

  paginatedItems = items.slice(offset).slice(0, per_page),
  total_pages = Math.ceil(items.length / per_page),

  paginContent = {
    page: page,
    per_page: per_page,
    pre_page: page - 1 ? page - 1 : null,
    next_page: (total_pages > page) ? page + 1 : null,
    total: items.length,
    total_pages: total_pages,
    data: paginatedItems
  };
  console.log("Paginate Item: ", paginatedItems);
  console.log("Pagin Content: ", paginContent);
  const total = paginContent.total;
  return paginContent.data;
};

0 个答案:

没有答案