前言
在使用 sails.js 开发 web 应用时,我们通常需要做分页功能。sails-pagination 是一个 npm 包,它提供了一种方便易用的方式来实现分页功能,这使得我们可以将更多的注意力放在业务逻辑上而不是分页逻辑上。
本文将介绍 sails-pagination 的使用方法,并给出一些代码示例,帮助读者更快更好地使用该包。
安装 sails-pagination
要在 sails.js 中使用 sails-pagination,你需要同时安装 sails-pagination 和 lodash 包,因为 sails-pagination 依赖于 lodash。
npm install sails-pagination lodash --save
使用 sails-pagination
使用 sails-pagination 分页插件非常简单,只需在 Model 上定义分页方法,就可以轻松搞定分页功能了。
以下是在 sails.js 中使用 sails-pagination 的基本流程:
1. 安装 sails-pagination 和 lodash
npm install sails-pagination lodash --save
2. 在 Model 里定义分页方法
-- -------------------- ---- ------- -- ------------------ ----- - - ------------------ ----- --------------- - ---------------------------- -------------- - - ----------- - -- --- -- -- ---- ----- ----------------- -------- - ----- ----- - ----- ------------- ----- ----- - ----- ---------------------------------- ------------------------ ------ -------------------------------------- -------- ------ ------ -------- - --
3. 调用分页方法获取数据
// api/controllers/UserController.js module.exports = { async list(req, res) { const users = await User.list(req.query.currentPage || 1, req.query.perPage || 10); res.json(users); } };
以上代码中,我们在 User Model 上定义了一个 async 函数 list,在该函数中使用 sailsPagination.paginate 方法完成分页逻辑。在 API 的 Controller 里,我们只需调用 list 方法,即可自动返回分页数据。
sails-pagination API
sailsPagination.paginate(options)
sailsPagination.paginate 方法接收一个对象参数,参数说明如下:
- options.currentPage:(required)当前页码
- options.perPage:(required)每页显示的数目
- options.count:(required)总数据数
- options.items:(required)当前页数据数组
调用该方法将返回一个对象,该对象拥有如下属性:
- totalPages:总页数
- currentPage:当前页码
- perPage:每页显示的数目
- previousPage:上一页码
- nextPage:下一页码
- totalCount:总数据数
- items:当前页数据数组
sails-pagination 高级配置
1. 自定义显示页数
上文演示了 sails-pagination 基本用法,如果你需要在页面上自定义显示页码数,可以在 paginate 方法中传入一个对象,指定要显示的页码数量。
示例:
const users = await User.find().paginate({currentPage, perPage, pageLength: 5}).populateAll();
2. 自定义分页页面 URL 格式
默认情况下,sails-pagination 使用的 URL 格式如下:
http://example.com/api/users?currentPage=3&perPage=10
你可以自定义 URL 格式,只需在配置文件或全局变量中添加如下代码:
const sailsPagination = require('sails-pagination'); sailsPagination.urlBuilder(function(page) { return 'http://example.com/api/users/page/' + page; });
3. 处理回调函数
sails-pagination 通过第二个参数支持回调函数,回调函数将接收 err 和 results 两个参数,其中 err 参数用于处理错误,results 参数返回分页数据。
示例:
User.find().paginate({currentPage, perPage}, function(err, users) { if (err) { return console.log(err); } console.log(users); });
总结
sails-pagination 为我们提供了一种方便快捷的分页方式,使我们更专注于业务逻辑的实现而不是分页逻辑。掌握了本文所述的内容,相信读者已经能够轻松上手 sails-pagination。
当然,sails-pagination 还有很多高级功能,如自定义显示样式、自定义 URL 匹配等。读者可以前往 sails-pagination GitHub 仓库了解更多详细信息。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60055afe81e8991b448d8a77