[英]Firebase - proper way to structure the DB
我有一個iOS應用,就像一個音樂社交網絡。 在該應用程序中,用戶共享有關特定音樂“曲目”的“帖子”。 考慮到每個“發布”對象都引用一個“跟蹤”對象,我想知道在Firebase中構建數據庫的最佳方法。
另外,當用戶提交新帖子時,我需要通過查詢藝術家+歌曲標題來檢查曲目是否已經存在-如果該曲目不存在,請添加新曲目。 如果軌道存在,請獲取“ track_id”以在“ post”對象中進行引用。
在這種情況下,當您實現曲目搜索功能並搜索遵循曲目的用戶時,將會遇到一些麻煩。 因此,通常,您需要在客戶端應用程序中完全加載至少一個表。 希望對以后的麻煩有所幫助。 請檢查Github上的Salada框架。 您可以使用關系。
這里的挑戰是在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.
通過這種結構,如果您知道藝術家和曲目名稱,則可以將它們連接起來,並在artist_tracks節點中對.equalToValue(true)進行簡單查詢以查看其是否存在。
“帖子”節點中的帖子與這些特定的藝術家和曲目相關。
在某些情況下,您可以將數據粘合在一起以執行和搜索,而無需額外的節點……
stuff
artist_track: Billy_Thorpe_Children_Of_The_Sun
但是,由於名稱中的空格和文本寬度的變化,因此無法使用。 這樣可以確保您在數據中包含足夠的數字,以處理許多歌曲和藝術家,因此長度保持一致。
artists_tracks
artist_00000_track_id_00002: true
現在您可以擁有50,000位藝術家和50,000條曲目。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.