2016-12-15 2 views
0

Firebase 데이터베이스 규칙에서 와일드 카드를 사용할 수 있습니까? 내 실험에서 그런 것처럼 보이지 않습니다. 나는 무엇인가 놓치고 있는가? 그렇지 않으면 일어날 것인가?Firebase 데이터베이스 규칙의 와일드 카드

예를 들어 모든 products_* 항목에 대해 동일한 규칙을 적용 할 수 있으며 와일드 카드를 사용하여 그룹화하는 것이 더 쉽습니다.

명확히하기 위해 웹 앱이며 콘솔에 설정 한 데이터베이스 권한에 관심이 있습니다. 거기에 와일드 카드를 사용할 수 있습니까? 예를 들어

,

{ 
"rules": { 
    "products_A": { 
     <rules> 
    }, 
    "products_B": { 
     <rules> 
    } 
} 

내가 좋아하는 규칙의 1 세트하고 싶은 :

{ 
"rules": { 
    "products_*": { 
     <rules> 
    } 
} 

감사합니다.

+2

포스트 규칙을 group_1하는 읽기/쓰기 group_0하는 읽기/쓰기가 아니라 수 : 같은 중포 기지 데이터베이스의 데이터는 볼 수 있었다 해결책이있을 수 있으므로 와일드 카드를 통해 성취하고자하는 것은 무엇입니까? – Jay

+0

@Jay, 설명과 함께 업데이트되었습니다! – Ahsan

+2

나는 놀라운 대답을 올렸지 만 갑자기 읽는 것을 잊어 버렸기 때문에 그 질문에 대해 완전히 틀린 것을 읽었습니다. 그 메모에 ... 질문에 무엇이 묻고 있는지는 아직 불분명합니다. 대부분의 firebase 규칙은 둘러싼 부모 노드를 나타내는 자리 표시자를 사용합니다. 어쩌면 현재 규칙을 게시하고 후속 조치를 설명 할 수 있습니다. – Jay

답변

5

Firebase는 ID 및 동적 하위 키를 나타내는 데 사용되는 와일드 카드 경로를 제공합니다. 예를 들어 아래의 규칙에서 $ uid는 해당 노드 내의 매개 변수가 상위 노드를 참조 할 수있게하는 '와일드 카드'입니다.

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".write": "$uid === auth.uid" 
     } 
    } 
    } 
} 

위 예제에서 $ uid는/users 노드 내의 모든 사용자 노드에 대한 와일드 카드 경로입니다. 위의 규칙이 노드별로 어떻게 확장되는지는 다음과 같습니다.

users 
    uid_0 <--------| 
       V 
    ".write": "uid_0 === auth.uid" //only user with uid = uid_0 can write 
    uid_1 
    ".write": "uid_1 === auth.uid" //only user with uid = uid_1 can write 
    uid_2 
    ".write": "uid_2 === auth.uid" //only user with uid = uid_1 can write 

확장 할 수있는 유연성이 뛰어납니다. 특정 사용자 집합이 그룹 노드에 액세스 할 수있게하려고한다고 가정 해보십시오. 그룹 규칙은

"rules": { 
    "Groups": { 
     "$group_id" : { 
     ".read": "root.child('Allowed_Users/' + auth.uid).val() === $group_id", 
     ".write": "root.child('Allowed_Users/' + auth.uid).val() === $group_id" 
     } 
    } 

이것은 Allowed_Users 노드에 지정된 사용자의 특정 세트에 각 그룹 노드에 대한 액세스를 제한 할 수 있습니다.

Groups 
    group_0 
    //data 
    group_1 
    //data 


Allowed_Users 
    uid_0: group_0 
    uid_1: group_0 

이 예는 사용자 uid_0 및 uid_1 텍스트주십시오, 아니 이미지로