【问题标题】:How to handle pagination with Backbone.PageableCollection and a custom Express route如何使用 Backbone.PageableCollection 和自定义 Express 路由处理分页
【发布时间】:2018-06-12 23:19:06
【问题描述】:

我正在编写一个使用名为 LeanCloud 的数据库的应用程序。我设置了一个页面,可以查看数据库上的所有用户,但 LeanCloud 设置为每个请求仅发送 100 条数据。

数据库中目前有 853 个用户,我可以更改一个设置,以便每个请求发送 1000 条数据,但我觉得这会大大降低应用程序的速度,并且用户数量很可能会超过 1000不久。

这是我的快递get路线:

router.get('/', function(req, res, next) {
    var query = new AV.Query(usersObject);
    var pageNumber = req.query.page
    var perPage = req.query.per_page
    query.limit(perPage)
    query.skip((perPage * pageNumber) - perPage)
    query.count(usersObject).then((userCount) => {
        query.find().then(function(userData) {
            res.json({
                userInfo: userData,
                pageInfo: {
                    userCount: userCount,
                    pageCount: Math.ceil(userCount / perPage),
                    currentPage: pageNumber
                }
            });
        });
    });
});

显然,响应包含userInfopageInfo,我可以在/api/users?page=1&per_page=30 查看。为什么是查询字符串?这将我带到问题的下一部分。

我正在使用主干集合,经过一些研究,我发现backbone.paginator 是用于分页的主干集合的替代品。这就是构建查询字符串的原因。

export var UserCollection = Backbone.PageableCollection.extend({
    model: UserModel,
    url: '/api/users',
    parse: function(response) {
        return response.userInfo
    },
    state: {
        firstPage: 1,
        pageSize: 30,
        totalPages: null,
        totalRecords: null

    },
})

在此页面上,有一个表格显示statequeryParams,并说可以设置这些以适应我不完全理解的服务器API。

我应该在这里做什么?有没有办法可以将服务器响应中的值设置为 queryParams 上的值或主干.paginator 中的状态?

【问题讨论】:

    标签: javascript express backbone.js pagination backbone.paginator


    【解决方案1】:

    并说可以设置这些以适应我不完全理解的服务器 API。 我应该在这里做什么?

    这适用于正在集成到现有 API 的用户。 在您的案例中,API 是您正在开发的快速路由,因此您不必进行任何查询参数映射。

    假设您必须使用将firstPage 理解为startingIndex 的第三方API,在这种情况下您需要这样做:

    queryParams: {
     firstPage: 'startingIndex'
    }
    

    有没有办法可以将服务器响应中的值设置为 queryParams 或 state 上的值

    fetching data and managing states 中提到的发送带有结构的响应

    [{ pagination state }, [{}, {} ...]]
    

    会自动更新可分页集合状态。 如果响应包含其他结构中的状态,您可以使用parseState(response){ return response.state; } 方法从响应中返回状态对象

    【讨论】:

      猜你喜欢
      • 2011-04-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 2011-06-29
      • 2019-02-19
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多