2016-08-30 2 views
3

Firebase를 테스트하기 시작했는데 색인 생성에 대해 한 가지 알아낼 수 없습니다. 나는 내가 읽은 것을 기반으로 구조를 만들고 있습니다 - Firebase Data Structuring - 사용자 및 그룹의 예제와 같습니다. JSON 나무는 다음과 같이 보입니다 :Firebase .indexOn 동적 키

{ 
    "babies" : { 
    "-KQSVCXI-ZMz_lQ_Q906" : { 
     "name" : "Baby", 
     "parents" : { 
     "F0o8Gr5GC2SrakUYZpC20efcmk63" : true 
     } 
    }, 
    "-KQSf4t9XQC3LnbsxLYS" : { 
     "name" : "Name2", 
     "parents" : { 
     "S6aO6Dx4lgg6anW9S9hu7EJrhVg1" : true 
     } 
    } 
    } 
} 

을 내가 부모를 위해 아기를 얻으려고 - 그룹의 구성원이 중포 기지의 예에서 있었다처럼. 내가 사용하여 아이폰 OS 응용 프로그램에서 그 일을 해요 : user.uid는 현재 사용자의 ID입니다

self.babiesReference 
       .queryOrderedByChild("parents/\(user.uid)") 
       .queryEqualToValue(true) 
       .observeSingleEventOfType(.Value, withBlock: { (snapshot) in 

       // Print value 
       print(snapshot.value) 

      } 

합니다. 이것은 잘 작동하지만 남아있는 유일한 문제는 다음과 같습니다.

불특정 색인 사용. ".indexOn"를 추가하는 것을 고려 : "부모/S6aO6Dx4lgg6anW9S9hu7EJrhVg1" 규칙 성능 향상을 위해 보안에/아기에

어떻게 인덱스 사용자의 ID를 제공하는이 "동적"아이에게? 그것을 할 수있는 방법이 있습니까, 아니면 나무 구조를 변경해야합니까?

감사합니다.

+0

보안 규칙은 변수가있는 동적 키를 허용합니다. 인덱싱이 이들을 지원하는지 잘 모르겠지만 시도해 볼 가치가 있습니다. 자세한 내용은 https://firebase.google.com/docs/database/security/user-security를 ​​참조하십시오. 규칙은/users/user/id 아래에있는 모든 키를 보호하는/users/$ user_id에 적용됩니다. –

답변

2

이러한 유형의 쿼리 (일반적으로 동적으로 인덱스를 추가해야하는 경우)에는 역 색인을 설정해야 할 수 있습니다. 귀하의 경우 :

{ 
    "babies" : { 
    "-KQSVCXI-ZMz_lQ_Q906" : { 
     "name" : "Baby", 
     "parents" : { 
     "F0o8Gr5GC2SrakUYZpC20efcmk63" : true 
     } 
    }, 
    "-KQSf4t9XQC3LnbsxLYS" : { 
     "name" : "Name2", 
     "parents" : { 
     "S6aO6Dx4lgg6anW9S9hu7EJrhVg1" : true 
     } 
    } 
    }, 
    "parents": { 
    "F0o8Gr5GC2SrakUYZpC20efcmk63": { 
     "babies": { 
     "-KQSVCXI-ZMz_lQ_Q906": true 
     } 
    }, 
    "S6aO6Dx4lgg6anW9S9hu7EJrhVg1": { 
     "babies": { 
     "-KQSf4t9XQC3LnbsxLYS": true 
     } 
    } 
    } 
} 

이러한 유형의 양방향 링크는 Firebase (및 많은 유사한 NoSQL 데이터베이스)에서 상당히 일반적입니다.

+0

알았어, 고마워. 그러나이 경우 ".indexOn"을 어떻게 설정합니까? – jovanjovanovic

+0

여기에서 키만 액세스하기 때문에 사용자 정의 색인이 필요하지 않습니다 (키는 자동으로 색인됩니다). 위의 구조로 색인이 누락되었다는 경고가 계속 표시되는 경우 쿼리 코드와 경고를 표시하십시오. –

+0

프랭크에게 감사드립니다. 나는 이것을 시험해 보았지만, 이것이 이것이 작동하도록 만드는 유일한 방법이라고 확신한다. 건배 – jovanjovanovic