Firebase - 构建数据库的正确方法
Firebase - proper way to structure the DB
我有一个 iOS 应用程序,它就像一个音乐社交网络。
在该应用中,用户分享 "posts" 特定音乐 "tracks"。
考虑到每个 "post" 对象引用单个 "track" 对象,我想知道在 Firebase 中构造数据库的最佳方法。
此外,当用户提交新的 post 时,我需要通过查询艺术家 + 歌曲名称来检查曲目是否已存在 - 如果曲目不存在,请添加新曲目。如果轨道存在,则获取 "track_id" 以在 "post" 对象中引用。
这里的挑战是在 Firebase 中执行 'and' 查询,这不存在。因此,您将两份数据混合在一起,然后执行该查询。这是一个结构
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 首曲目。
在这种情况下,您在实现曲目搜索功能和搜索关注曲目的用户时会遇到一些麻烦。
所以一般来说,您需要在您的客户端应用程序中完全加载至少一个 table。
希望对你以后的烦恼有所帮助。请检查 Github 上的 Salada 框架。您可以使用关系。
我有一个 iOS 应用程序,它就像一个音乐社交网络。 在该应用中,用户分享 "posts" 特定音乐 "tracks"。 考虑到每个 "post" 对象引用单个 "track" 对象,我想知道在 Firebase 中构造数据库的最佳方法。
此外,当用户提交新的 post 时,我需要通过查询艺术家 + 歌曲名称来检查曲目是否已存在 - 如果曲目不存在,请添加新曲目。如果轨道存在,则获取 "track_id" 以在 "post" 对象中引用。
这里的挑战是在 Firebase 中执行 'and' 查询,这不存在。因此,您将两份数据混合在一起,然后执行该查询。这是一个结构
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 首曲目。
在这种情况下,您在实现曲目搜索功能和搜索关注曲目的用户时会遇到一些麻烦。 所以一般来说,您需要在您的客户端应用程序中完全加载至少一个 table。 希望对你以后的烦恼有所帮助。请检查 Github 上的 Salada 框架。您可以使用关系。