【问题标题】:Sails.Js - How I do pagination in sails.JsSails.Js - 我如何在sails.Js 中进行分页
【发布时间】:2014-12-26 04:51:49
【问题描述】:

我想使用sails.js、mongodb 和waterline-ORM 创建分页表。

sails.js 中是否有特定的分页方式?

【问题讨论】:

    标签: javascript node.js sails.js waterline


    【解决方案1】:

    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(); 非常容易

    水线和船帆文档中有很多信息。

    【讨论】:

    • 我们如何在同一个查询中获得总数?因为我想告诉我的视图是否应该显示“下一个按钮”,并放置“页面”碎屑(如 1、2、3、4、5)
    • @Meeker 干得好。也请将此添加为答案。这对我很有帮助。
    【解决方案2】:

    还有另一种方式。

    如果你想从前端获取数据,并且已经开启了蓝图,你也可以试试: http://yourDomain.com/ModelName?skip=10&limit=10

    参考: 1.官网:http://sailsjs.org/#/documentation/reference/blueprint-api/Find.html

    【讨论】:

    • 太棒了...但是为了在前面生成一个功能性分页器,我需要将初始值传递给我的(角度)应用程序...我的意思是初始值:项目总数和 items_per_page (如果没有指定,它应该是蓝图中的默认页面)......获取这些的正确模式是什么?
    【解决方案3】:

    您可以使用内置的 skiplimit 查询参数构建一个功能性分页器,用于蓝图路由:

    /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。

    【讨论】:

    • 这在返回总数方面非常出色。我看看你是怎么做到的。理想情况下,我想在同一个查询中获取 totalCount,而不必执行另一个查询来获取总数。
    【解决方案4】:

    我想你也可以用 io 做到这一点:

    io.socket.get('/thing', {limit: 30, skip: 30*pageNum}, function(things, jwr) { /*...*/ })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-11-25
      • 2013-07-19
      • 2017-01-24
      • 1970-01-01
      • 2015-10-25
      • 1970-01-01
      • 2013-10-07
      相关资源
      最近更新 更多