【发布时间】:2014-12-26 04:51:49
【问题描述】:
我想使用sails.js、mongodb 和waterline-ORM 创建分页表。
sails.js 中是否有特定的分页方式?
【问题讨论】:
标签: javascript node.js sails.js waterline
我想使用sails.js、mongodb 和waterline-ORM 创建分页表。
sails.js 中是否有特定的分页方式?
【问题讨论】:
标签: javascript node.js sails.js waterline
http://sailsjs.org/#/documentation/concepts/ORM/Querylanguage.html
Model.find().paginate({page: 2, limit: 10});
Model.find({ where: { name: 'foo' }, limit: 10, skip: 10 });
如果您希望分页异步工作,使用 JQUERY $$.getJSON 和服务器上的 res.json(); 非常容易
水线和船帆文档中有很多信息。
【讨论】:
还有另一种方式。
如果你想从前端获取数据,并且已经开启了蓝图,你也可以试试: http://yourDomain.com/ModelName?skip=10&limit=10
参考: 1.官网:http://sailsjs.org/#/documentation/reference/blueprint-api/Find.html
【讨论】:
您可以使用内置的 skip 和 limit 查询参数构建一个功能性分页器,用于蓝图路由:
/api/todos?skip=10&limit=10
使用此选项,您可以根据各种设备大小动态调整页面大小 - 您可以使用 limit 提供此选项,这基本上就是您的页面大小。将(页面大小 - 1)乘以当前页码 - 瞧,你已经得到了 skip 参数。
至于如何获取所有项目的数量,我还没有找到内置的方法,所以我写了一个小助手中间件(https://github.com/xtrinch/sails-pagination-middleware)来返回响应中的总数JSON 这种方式:
{
"results": [
{
/* result here */
},
{
/* another result here */
}
],
"totalCount": 80
}
您需要做的就是通过 npm 安装中间件并将其添加到 http.js 中的中间件中。
如果您需要一个功能齐全的示例,我还在 github 上提供了一个具有这种分页功能的示例待办事项应用程序:https://github.com/xtrinch/vue-sails-todo。它是用 vue 编写的,但无论哪种情况你都应该明白。
请注意,此答案需要sails 1.x。
【讨论】:
我想你也可以用 io 做到这一点:
io.socket.get('/thing', {limit: 30, skip: 30*pageNum}, function(things, jwr) { /*...*/ })
【讨论】: