我的解析数据库名称为时间表,我想从"进气"列中获取数据,但是我有很多数据,大约有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查询10000(10k)对象)。但是我不明白,很抱歉再次提出问题。
有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