关于 ios:Parse.com 查询 1000 多个对象

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