1

여기 내 데이터베이스입니다 :중포 기지 규칙 시뮬레이터 : 푸시을 시뮬레이션하는 방법을

{ 
    "lists": { 
    "list1_id_1": { 
     "field1": "some value", 
     "field2": "some value" 
    } 
    } 
} 

내가 어떤 사용자가 사람을 기존의 수정 새 목록을 만들 수 있지만 수 있도록하려면, 그래서 다음과 같은 규칙 시도 :

{ 
    "rules": { 
    "lists": { 
     ".read": "true", 
     ".write": "!data.exists()" 
    } 
    } 
} 
을 분명히

{ "field1": "qq", "field2": "ww" } 

: 나는 /lists/에 다음 데이터를 기록하려고 할 때

이 작동하지 않았다/list /가 이미 있기 때문에 ".write"규칙이 쓰기에 실패했습니다.

{ 
    "rules": { 
    "lists": { 
     ".read": "true", 
     "$list_id": { 
     ".write": "!data.exists()" 
     } 
    } 
    } 
} 

이, 중포 기지 시뮬레이터가 쓰기 작업을 실패 규칙을 선택하지 않은 중 하나가 작동하지 않았다, 그래서 나는 "에 .write"입니다 때문에 것 같아요 :

그래서 나는 다음과 같은 규칙을 시도 "목록"에서 누락되었습니다.

여기서 도와 주실 수 있나요? 내 문제는 규칙과 시뮬레이터에서/lists /에 새 항목을 밀어 넣으려고하는 방식과 같다고 생각합니다.

P. 나는 새로운 데이터를 푸시하려고 할 때 listbase_id가 Firebase에 의해 생성된다는 것을 알고 있지만 시뮬레이터에 대해이 지식을 사용하는 방법을 모르겠습니다.

감사합니다. 선택 Slavik

답변

0

규칙의 두 번째 세트는 일을해야하지만, 당신은 시뮬레이터에서 자식 ID를 지정해야합니다 : 그래서, /lists 노드 아래 모든 아이에게

{ 
    "rules": { 
    "lists": { 
     ".read": "true", 
     "$list_id": { 
     ".write": "!data.exists()" 
     } 
    } 
    } 
} 

$list_id 변수가 가리키는

simulator screenshot

: 시뮬레이터 내에서, 당신은 실패 이미 존재하는 아이, 쓰기 테스트 /lists/list1_id_1에 위치를 설정하기 위해 뭔가를해야합니다3210

push 작업은 주어진 위치에 고유 한 ID가있는 하위를 만듭니다. 이를 시뮬레이트하려면 위치가 이미 존재하지 않는 임의의 자식 키 (예 : /lists/some-random-string 또는 /lists/-Kfg3YL0TS1X1SfQ9GGg)로 설정되어 있어야합니다.

+0

하지만 규칙을 올바른지 확인하기 위해 시뮬레이터에서 새 항목을/lists /에 푸시 시뮬레이션하려면 어떻게해야합니까? – user2145097

+0

'push'는 주어진 위치에 유일한 ID를 가진 자식을 생성하는 것입니다. 그래서, 시뮬레이터에서, 당신은 이미 존재하지 않는 자식 키 ('/ lists/some-random-string')로 위치를 설정하기 만하면됩니다. 시뮬레이터에는 푸시 시뮬레이션이 내장되어 있지 않지만이 작업은 실제로 동일한 작업입니다. 나는 이것으로 내 대답을 업데이 트했습니다. – Grimthorr

관련 문제