0

이렇게 구현하는 방법을 많이 조사 했으므로 데이터베이스 구성 방법에 대한 최적의 방법을 찾을 수 없습니다.적절한 Firebase Firestore 'Swift의 데이터베이스 구조와 비슷합니다.

Firebase의 새 데이터베이스 Firestore를 사용하여 iOS 앱을 만들고 있습니다.

기본적으로 두 개의 주요 '컬렉션'이 있습니다.

'사용자' '위치'

100 곳이있다. 사용자는 무한합니다. 사용자가 위치를 '좋아할'수 있습니다. 사용자는 다른 사용자를 '추적 할 수 있습니다'.

나는 현재 사용자의 '좋아하는'위치와 '따라 다니는'사용자를 쿼리하는 문제에 직면 해 있습니다.

이들은 사용자 내의 개체 여야합니까? 예를 들어 ...

/users 
    /userId 
     name:"Phil" 
     likedLocations 
      location1:true 
      location5:true 
     followedUsers 
      userId3:true 
      userId6:true 

또는

다음은 '위치'수집에 있어야합니다 ...
/locations 
    /locationId 
     name:"New York" 
     userLiked 
      "userId":true 

편집의 용이성을 위해 나는 데이터베이스에 수동으로 이동하여 위치를 편집 할 수 있습니다. Option A를 사용하면 아무런 문제가 없습니다. 사용자는 '좋아하는 지역'에 100 개의 항목이있을 가능성이 있습니다. 옵션 B를 사용하면 위치에 무한대 (앱과 동일한 수의 사용자) 키 값 쌍이있을 수 있습니다.

+0

TLDR - 사용자가 다음/좋아하는 유형의 데이터베이스를 설정하는 데 가장 쉽게 쿼리하고 비용 효율적인 방법은 무엇입니까? – pmanning

+1

첫 번째로 이동하십시오. 두 번째 예제에서는 뉴욕에 대해 20000 명의 사용자 만있을 수 있습니다. 그러나 Phil이 20000 개의 장소를 좋아할 것 같지는 않습니다. – jimijon

답변

1

왜이 두 가지 루트 모음을 사용하지 않습니까?

/likedPlaces 
    /userId 
     name: "Phil" 
     location: locationId 

/followers (or followed. Based on your query needs) 
    /userId 
     name: otherUserId 

이 방법은 특정 사용자가 조회 할 수 있습니다

  • 그의 좋아하는 장소

  • 필터를 그들 중 일부에 대한

  • 모든 그의 추종자를 자신의 ID

  • 을하여
  • 사용자가 팔로어인지 확인합니다.

의미가 있습니까? 희망이 도움이됩니다. Alessandro

관련 문제