我正在编写一个使用名为LeanCloud的数据库的应用程序。我已经设置了一个页面,我可以在其中查看数据库中的所有用户,但LeanCloud设置为每个请求只发送100个数据。
目前,数据库中有853个用户,我可以更改设置,以便每个请求发送1000个数据,但我觉得这会大大减慢应用程序的速度,很可能用户数量将超过1000个不久。
这是我的快递获取路线:
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
}
});
});
});
});
显然,回复包含userInfo
和pageInfo
,我可以在/api/users?page=1&per_page=30
查看。为什么查询字符串?这让我想到了问题的下一部分。
我正在使用骨干系列,经过一些研究后,我发现backbone.paginator是代替分页的Backbone系列的替代品。这就是构建查询字符串的原因。
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
},
})
在此页面上,有一个表格显示state
和queryParams
,并说这些表可以设置为适应我不完全理解的服务器API。
我应该在这里做什么?有没有办法可以将我的服务器响应中的值设置为queryParams上的值或者来自backbone.paginator的状态?
答案 0 :(得分:2)
并说这些可以设置为适应我不完全理解的服务器API。 我该怎么办呢?
这适用于正在集成到现有API的用户。 您的案例中的API是您正在开发的快速路由,因此您不必进行任何查询参数映射。
我们假设您必须使用将firstPage
理解为startingIndex
的第三方API,在这种情况下您需要这样做:
queryParams: {
firstPage: 'startingIndex'
}
有没有办法可以将我的服务器响应中的值设置为queryParams或state
上的值
如fetching data and managing states中所述,发送带有结构的回复
[{ pagination state }, [{}, {} ...]]
将自动更新可分页收集状态。
如果响应包含另一个结构中的状态,则可以使用parseState(response){ return response.state; }
方法从响应中返回状态对象