我在使用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个标签后发出炸弹。
答案 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();