Firebase - 构建数据库的正确方法

时间:2016-06-14 09:14:33

标签: ios firebase firebase-realtime-database

我有一个iOS应用程序,就像音乐的社交网络。 在应用程序中,用户共享关于特定音乐“曲目”的“帖子”。 我想知道在Firebase中构建数据库的最佳方法,考虑到每个“post”对象引用一个“track”对象。

此外,当用户提交新帖子时,我需要通过查询艺术家+歌曲标题来检查曲目是否已经存在 - 如果该曲目不存在,则添加新曲目。如果曲目存在,则在“post”对象中获取要引用的“track_id”。

2 个答案:

答案 0 :(得分: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.

使用此结构,如果您知道艺术家和曲目名称,您可以连接它们并在artists_tracks节点中执行简单查询.equalToValue(true)以查看它是否存在。

帖子节点中的帖子会与特定的艺术家和曲目相关联。

在某些情况下,您可以将数据粘合在一起以执行和搜索,而无需额外的节点......就像这样

stuff
  artist_track: Billy_Thorpe_Children_Of_The_Sun

但是,由于名称中的空格和文本的宽度不同,它不会起作用。因此,这可以确保您在数据中包含足够的数字来处理许多歌曲和艺术家,因此长度保持一致。

artists_tracks
   artist_00000_track_id_00002: true

现在你可以拥有50,​​000名艺术家和50,000首曲目。

答案 1 :(得分:0)

在这种情况下,当您实施曲目搜索功能并搜索跟踪曲目的用户时,您将遇到一些麻烦。 因此,通常,您需要在客户端应用程序中完全加载至少一个表。 我希望这可以帮助你以后的麻烦。