我将解析数据库名称作为时间表,我想从“Intake”列中获取数据,但我有很多数据,大约有5000条记录。我知道我们可以获得的最大查询对象是1000,但如何获得超过1000条记录? 我写的代码只是查询1000
var query = PFQuery(className: "Timetable")
var limit:NSInteger = 1000
var skip:NSInteger = 0
query.limit = limit
query.skip = skip
query.orderByAscending("Intake")
query.findObjectsInBackgroundWithBlock
{
(objects:[AnyObject]?, error:NSError?) -> Void in
if error == nil
{
query.findObjectsInBackgroundWithBlock
{
(objects:[AnyObject]?, error:NSError?) -> Void in
if error == nil
{
for object in objects! as [AnyObject]
{
var intakeCode = object["Intake"] as? String
if !self.pickerString.containsObject(object["Intake"] as! String) {
self.pickerString.addObject(object["Intake"] as! String)
}
}
self.pvIntakeCode.reloadAllComponents()
}
else
{
NSLog("Error: %@ %@", error!, error!.userInfo!)
}
}
}
else
{
NSLog("Error: %@ %@", error!, error!.userInfo!)
}
我知道这个问题来自stackoverflow,但我真的不明白它说的是什么。 (另一个问题来自:Parse.com query for 10000 (10K) objects)。但我不明白,很抱歉再次提出这个问题。
答案 0 :(得分:1)
有1000个记录的限制是有原因的。您永远不需要在一个查询中检索那么多对象,因为这很可能会阻塞您的应用程序并导致性能低下。
我可以看到两种情况,你想要检索所有记录:
在方案1 中,您真正想要的是翻阅结果。由于您一次只能在屏幕上显示一些记录,因此您应该查询即100条记录,然后在用户滚动并接近前100条记录的末尾时触发下一条100条记录的新查询,直到用户已经滚动浏览所有用户(这将是一个非常耐心的用户...)。 您可以通过查询限制和跳过来解决此问题:
query.setLimit(100)
query.setSkip(skip)
首次运行,跳过为0.对于每次连续运行,您都会以100增加跳过。
在方案2 中,您不希望在客户端上执行此操作。输入后台工作! https://parse.com/docs/js/guide#cloud-code-advanced-background-jobs