Parse.com query for more than 1000 objects
我的解析数据库名称为时间表,我想从"Intake"列中获取数据,但我有很多数据,大约有 5000 条记录。我知道我们可以获取的最大查询对象是 1000,但是如何获取超过 1000 条记录?
我写的代码只是查询 1000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | 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)。但是我不明白,抱歉再次提问。
1000 条记录的限制是有原因的。您永远不需要在一个查询中检索那么多对象,因为这很可能会阻塞您的应用程序并导致性能下降。
我可以看到您想要检索所有记录的两种情况:
在场景 1 中,您真正想要的是翻阅结果。由于您一次只能在屏幕上显示几条记录,因此您应该查询即 100 条记录,然后在用户滚动并接近前 100 条记录的末尾时触发对接下来的 100 条记录的新查询等,直到用户已滚动浏览所有内容(这将是一个非常耐心的用户......)。
您可以通过使用限制和跳过查询来解决此问题:
1 2 | query.setLimit(100) query.setSkip(skip) |
第一次运行,skip 为 0。每连续运行一次,skip 增加 100。
在场景 2 中,您不想在客户端上执行此操作。进入后台工作!
https://parse.com/docs/js/guide#cloud-code-advanced-background-jobs