我有一个iOS应用程序,就像音乐的社交网络。 在应用程序中,用户共享关于特定音乐“曲目”的“帖子”。 我想知道在Firebase中构建数据库的最佳方法,考虑到每个“post”对象引用一个“track”对象。
此外,当用户提交新帖子时,我需要通过查询艺术家+歌曲标题来检查曲目是否已经存在 - 如果该曲目不存在,则添加新曲目。如果曲目存在,则在“post”对象中获取要引用的“track_id”。
答案 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)
在这种情况下,当您实施曲目搜索功能并搜索跟踪曲目的用户时,您将遇到一些麻烦。 因此,通常,您需要在客户端应用程序中完全加载至少一个表。 我希望这可以帮助你以后的麻烦。