2016-06-14 61 views
0

我有一個iOS應用程序,就像音樂社交網絡一樣。 在應用中,用戶分享有關特定音樂「曲目」的「帖子」。 我想知道在Firebase中構建數據庫的最佳方式,因爲每個「發佈」對象都引用單個「跟蹤」對象。Firebase - 構建數據庫的正確方法

此外,當用戶提交新帖子時,我需要通過查詢藝術家+歌曲標題來檢查曲目是否已經存在 - 如果曲目不存在,請添加新曲目。如果曲目存在,請在「發佈」對象中引用「track_id」。

回答

0

這裏面臨的挑戰是在Firebase中執行'和'查詢,該查詢不存在。所以你有兩塊數據在一起,然後做這個查詢。這裏有一個結構

artists 
    artist_0: Pink Floyd 
    artist_1: Billy Thorpe 
    artist_2: Led Zeppelin 

tracks 
    track_id_0: Stairway To Heaven 
    track_id_1: Children Of The Sun 
    track_id_2: Comfortably Numb 

artists_tracks 
    artist_0_track_id_2: true 
    artist_1_track_id_1: true 
    artist_2_track_id_0: true 

posts 
    post_id_0 
     artist_track: artist_1_track_id_1 
     post: Billy was one of the most creative musicians of modern times. 
    post_id_1 
     artist_track: artist_0_track_id_2 
     post: The Floyd is the best band evah. 

通過這種結構,如果你知道藝術家和曲目名稱,你可以將它們連接起來,並做了簡單的查詢在.equalToValue(真)artists_tracks節點,看它是否存在。

帖子節點中的帖子與特定的藝術家和曲目相關聯。

在某些情況下,你可以粘上你的數據在一起,沒有額外的節點,因爲在名稱空間和文本的不同寬度的執行和搜索......這樣

stuff 
    artist_track: Billy_Thorpe_Children_Of_The_Sun 

然而,將無法工作。這樣可以確保您在數據中包含足夠的數字,以處理許多歌曲和藝術家,因此長度保持一致。

artists_tracks 
    artist_00000_track_id_00002: true 

現在你可以有50,000名藝術家和50,000首曲目。

+0

感謝您的詳細解答! (和kickass軌道;)) – Gil

0

在這種情況下,當您執行軌道搜索功能並搜索跟蹤軌道的用戶時,您會遇到一些麻煩。 所以一般來說,您需要在您的客戶端應用程序中完全加載至少一個表。 我希望這可以幫助你以後的麻煩。