parse.com查询1000多个对象



我的解析数据库名称为时间表,我想从"进气"列中获取数据,但是我有很多数据,大约有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. 您想将所有记录呈现给用户
  2. 您想对所有记录进行操作

在方案1 中,您真正想要的是通过结果分页。由于您只能一次在屏幕上显示一些记录,因此您应该查询100个记录,然后在用户滚动并接近前100个末尾的下一个100个记录的新查询,直到用户已经滚动了所有内容(这将是一个非常耐心的用户...)。您可以通过限制和跳过查询来解决此问题:

query.setLimit(100)
query.setSkip(skip)

首次运行,跳过为0。对于每次连续运行,您都会增加100。

在方案2 中,您不想在客户端上执行此操作。输入背景作业!https://parse.com/docs/js/guide#cloud-code-advanced-background-jobs

最新更新