2016-06-14 4 views
0

나는 음악을위한 소셜 네트워크와 같은 iOS 앱을 가지고있다. 앱에서 사용자는 특정 음악 '트랙'에 대한 '소식'을 공유합니다. 각 "post"객체가 하나의 "track"객체를 참조한다는 점을 고려하여 Firebase에서 DB를 구조화하는 가장 좋은 방법을 알고 싶습니다.Firebase - DB를 구성하는 적절한 방법

또한 사용자가 새 게시물을 제출할 때 아티스트 + 노래 제목을 쿼리하여 트랙이 이미 있는지 확인해야합니다. 트랙이 없으면 새 트랙을 추가하십시오. 트랙이 존재하면 "게시물"개체에서 참조 할 "track_id"를 가져옵니다.

답변

0

여기서 도전은 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. 

을, 당신은 그들을 연결하고 존재하는지 (참) .equalToValue에 대한 artists_tracks 노드에서 간단한 쿼리를 할 수 있습니다.

게시물 노드의 게시물은 특정 아티스트 및 트랙과 연결됩니다. 이 때문에 이름에 공백과 텍스트의 다양한 폭, 그러나이

stuff 
    artist_track: Billy_Thorpe_Children_Of_The_Sun 

처럼 ... 추가 노드없이 수행하고 검색하기 위해 함께 데이터를 접착제 수있는 경우에

그 작동하지 않습니다. 따라서 길이가 일관되게 유지되도록 많은 노래 및 아티스트를 처리 할 수 ​​있도록 데이터에 충분한 자릿수가 포함되도록해야합니다.

artists_tracks 
    artist_00000_track_id_00002: true 

이제 50,000 명의 아티스트와 50,000 개의 트랙을 가질 수 있습니다.

+0

자세한 답변을 보내 주셔서 감사합니다. (그리고 kickass tracks;)) – Gil

0

트랙 검색 기능을 구현하고 트랙을 추적하는 사용자를 검색 할 때 몇 가지 문제가 발생합니다. 일반적으로 클라이언트 응용 프로그램에 하나 이상의 테이블을 완전히로드해야합니다. 이것이 나중에 문제가 발생했을 때 도움이되기를 바랍니다.

관련 문제