首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Backbone.PageableCollection和自定义快速路由处理分页

如何使用Backbone.PageableCollection和自定义快速路由处理分页
EN

Stack Overflow用户
提问于 2018-01-03 09:37:56
回答 1查看 695关注 0票数 2

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

目前DB中有853个用户,我可以更改设置,以便每个请求发送1000个数据,但我认为这会大大减慢应用程序的速度,而且用户数量很可能很快就会超过1000。

这是我的特快路线:

代码语言:javascript
复制
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是对进行分页的主干集合的替代。这就是构建查询字符串的内容。

代码语言:javascript
复制
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上的值或来自backbone.paginator的状态?

EN

回答 1

Stack Overflow用户

发布于 2018-01-05 11:16:11

并表示可以将它们设置为适应服务器API,而我并不完全理解这些API。我应该在这里做什么?

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

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

代码语言:javascript
复制
queryParams: {
 firstPage: 'startingIndex'
}

是否可以将服务器响应中的值设置为queryParams或state上的值?

正如在获取数据和管理状态中提到的,发送带有结构的响应

代码语言:javascript
复制
[{ pagination state }, [{}, {} ...]]

将自动更新分页集合状态。如果响应在另一个结构中包含状态,则可以使用parseState(response){ return response.state; }方法从响应返回状态对象。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48074733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档