簡體   English   中英

Firebase-構建數據庫的正確方法

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM