2013-08-04 25 views
0

我最近發現,在我的應用程序中使用後端作爲服務平臺的功能非常棒,但問題是沒有太多教程可以指導您在這些平臺上實現如此衆多的特殊數據庫結構實現,所以我想出了這個流行的場景以獲得一些清晰使用解析實現Hashtag多對多關係?

該結構是用戶可以寫一篇文章並附加hashtags(最多爲'n'),這些hashtags顯然可以附加到很多帖子,這是典型的多對多關係場景你如何提出實施以下查詢的數據庫結構?

  1. 用戶表有一個位置列,查詢是獲取當前用戶位置50英里內的特定哈希標籤的所有帖子?
  2. 流行主題標籤(連接到由其他用戶產生的交)圍繞當前用戶位置

P.S.這些是我能想到的一些一般場景,如果您認爲對Parse社區有幫助,可以在您的答案中附加其他常見場景。

回答

1

解析不提供完整的關係數據庫,但可以將關係列添加到數據類,該類允許類之間的多對多關聯。例如,您可以有一個hashtag類,並將關係列添加到包含其關聯主題標籤的post類。查詢1可以通過建立一個針對hashtag類的查詢來回答,指定期望的標籤,然後將其作爲針對post類的查詢的子查詢。在包含的查詢中,您可以指定您在用戶位置附近尋找post。例如。

PFQuery *tagQuery = [PFQuery queryWithClassName:@"hashtag"]; 
[tagQuery whereKey:@"tagName" equalTo:@"hash_tag_name"]; 

PFQuery *postQuery = [PFQuery queryWithClassName:@"post"]; 
[postQuery whereKey:@"hashtags" matchesQuery:tagQuery]; 
[postQuery whereKey:@"location" nearGeoPoint:userLocation withinMiles:50.0]; 

[postQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) { 
    //Do something with results 
}]; 

我想不出一種簡單的方法,即使用單個Parse查詢將第二個查詢的數據拉出來。一種方法是在當前位置附近檢索post,然後遍歷它們以確定與每個標籤相關聯的標籤(並計算它們的頻率)。

另一個選項完全是將標籤作爲字符串數組存儲在帖子中。然後,您可以使用標籤whereKey:equalTo:(單個標籤)或whereKey:containedIn:(多個標籤)查詢。採用這種方法,您需要跟蹤哪些標籤存在於其他地方。