2016-01-03 74 views
0

我想知道關於查詢,我可以根據第三級表結果從我的表中獲取數據。這是細節。嵌套解析查詢到第三級

  1. 表1 - >指針列(表2)。
  2. Table2->指針列(Table3)。
  3. Table3->指針列(表4)。

我想執行上表1的查詢,並希望得到表4的基礎上的結果 - >表3 - >表2 - >表1。我的意思是我希望在表4中找到「A」,並在結果的基礎上,我希望表3中的「A」的所有東西,然後表3中的所有表找到了表2中的內容,表1中的東西。所以怎麼可能:)。

我知道我可以通過調用單獨的查詢來做到這一點。但是,如果可能的話,我想要很短的路。

在此先感謝誰解決我的這個問題。

+0

你說他們是指針,但是你說你想要所有的東西基本上是不可能的,因爲指針意味着1對1的關係。更確切地說:如果它是1 - > 2 - > 3 - > 4,這很容易,但如果它是一棵樹(具有關係而不是指針)並且每個節點具有多個分支,則更困難 –

+0

Btw,on你想要哪個操作系統? Android或iOS –

+0

偏好是iOS,但我不認爲兩個平臺都會有任何更改。 –

回答

0

你可以試用BoltsFramework。它由Parse設計。

螺栓包括:

「任務」,使複雜的異步代碼更 管理組織。任務有點類似於JavaScript Promise,但適用於iOS和Android的 。

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這個話題

0

我已經做了一些實驗由我已經整理,我們只能查詢高達第二級,如果我們去第三級,然後我們將得到異常。這是我正在做的。

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以獲取數據。