嵌套Parse查询到第3级

时间:2016-01-03 13:13:59

标签: android ios parse-platform

我想了解一下我可以根据第三级表结果从我的表中获取数据的查询。这是详细信息。

  1. 表1 - >指针列(表2)。
  2. Table2->指针列(表3)。
  3. Table3->指针列(表4.)
  4. 我想在Table1上执行查询,并希望在表4的基础上得到结果 - >表3 - >表2 - >表1.我的意思是我想在表4中找到“A”并且在结果的基础上我希望表3中的所有内容都是“A”,然后表2中的所有表3都找到了表2然后在那里结果表1中的所有内容。那么它是如何可能的:)。

    我知道我可以通过调用单独的查询来做到这一点。但如果可能的话,我想要简短的方法。

    提前感谢谁解决了我的问题。

3 个答案:

答案 0 :(得分:0)

您可以尝试使用BoltsFramework。它是由Parse设计的。

  

螺栓包括:

     

“任务”,可以更复杂地组织复杂的异步代码   管理。任务有点像JavaScript承诺,但可用   适用于iOS和Android。

答案 1 :(得分:0)

好的,所以我想我找出了你的数据模式:

您错过的是非常有用的include方法:因此here是iOS的文档和Android的here

在伪代码中,它看起来像这样:

Create a query (let's say 'coolQuery') for table 1
Add to this query ('coolQuery') an include with table 2
Add to this query ('coolQuery') an include with table 2.table 3
Add to this query ('coolQuery') an include with table 2.table 3.table 4

看看这个thread,这是非常好的表述。 Kind of the same idea for iOS 如果您对此感兴趣,请参阅blog post of Parse关于此主题

答案 2 :(得分:0)

我做了一些实验,我已经对它进行了排序,如果我们进入第3级,我们只能查询到第二级,那么我们将获得异常。这就是我在做的事情。

PFQuery *Table4Query = [PFQuery queryWithClassName:@"Table4"];
[vehicleTypeQuery whereKey:@"name" equalTo:@"A"];    

PFQuery *Table3Query = [PFQuery queryWithClassName:@"Table3"];
[vehicleQuery whereKey:@"Table4PointerColumn" matchesQuery:Table4Query];

PFQuery *Table2Query = [PFQuery queryWithClassName:@"Table2"];
[Table2 whereKey:@"Table3PointerColumn" matchesQuery:Table3Query];


PFQuery *Table1Query = [PFQuery queryWithClassName:@"Table1"];

[query whereKey:@"Table2PointerColumn" matchesQuery:Table2Query];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) 
{

}

我收到了错误

  

"查询包含太多嵌套查询"

然后我试了这个。

PFQuery *Table3Query = [PFQuery queryWithClassName:@"Table3"];
[vehicleQuery whereKey:@"Table4PointerColumn" equalTo:[PFObject objectWithoutDataWithClassName:@"Table4" objectId:@"kVQvan1E23"]];

PFQuery *Table2Query = [PFQuery queryWithClassName:@"Table2"];
[Table2 whereKey:@"Table3PointerColumn" matchesQuery:Table3Query];


PFQuery *Table1Query = [PFQuery queryWithClassName:@"Table1"];

[query whereKey:@"Table2PointerColumn" matchesQuery:Table2Query];

[query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) 
{

}

这对我来说非常适合现在我只需要分别查询Table4来获取数据。