parse.com containsAllObjectsInArray limit

时间:2014-08-05 18:48:17

标签: ios parse-platform pfquery

我在使用containsAllObjectsInArray的pfquery中遇到了限制。

我的parse中的对象有一个数组属性,最多可包含12个字符串,只要我的搜索查询数组为9个或更少的字符串,查询就会很好。

当我使用containsAllObjectsInArray在此表上执行PFQuery并且我的搜索数组包含超过9个对象时,我收到以下错误。

错误:$ all查询中的条款太多(代码:154,版本:1.2.19)

所以很明显containsAllObjectsInArray只能在数组中搜索9个或更少的匹配项。

这是否会被修复?

我正在关注使用标签http://blog.parse.com/2013/03/19/implementing-scalable-search-on-a-nosql-backend/的可扩展搜索的Parse示例博客文章。非常惊讶这是建议使用的方法,它在物体有超过9个标签后发出炸弹。

2 个答案:

答案 0 :(得分:1)

我应该在发布前先尝试这个,但我只是将搜索分成最大大小为9的子数组,然后将它们分别添加到多个containsAllObjectsInArray调用中的pfquery中。查询工作正常。一种黑客的工作,但现在工作。

答案 1 :(得分:1)

我应用相同的解决方案,我将查询拆分为最多9个项目并且有效。以下是PHP的示例代码:

    $totalTags = count($tags);
    $theQuery = new ParseQuery("articles");
    if($totalTags  > 9){
        $c=0;
        for($i=0;$i<($totalTags/9);$i++){
            $limitArray = Array();
            $h = 0;
            $ini = $c;
            $fin = min(9+$c,$totalTags);
            for($j = $ini; $j < $fin; $j++){
                $limitArray[$h] = $tags[$j];
                $c++;
                $h++;
            }
            $theQuery->containsAll("tags", $limitArray);
        }
    }else{
        $theQuery->containsAll("tags", $tags);  
    }
    $articles = $theQuery->find();