0

권한을 부여한 후 "users"테이블에 사용자를 추가합니다. 또한이 사용자에게 일부 값을 추가합니다.이 값은 무시되고 싶지 않습니다.존재하는 경우 데이터 재 작성을 금지하는 방법

ref.child("users").child((FIRAuth.auth()?.currentUser?.uid)!).setValue(["username": "MyName"]) 

규칙

{ 
    "rules": { 
    ".read": "auth != null", 
    ".write": "auth != null", 
    "users": { 
     ".write": "!root.child('users/'+auth.uid).exists()", 
     ".read":true, 
     "positive": { 
     ".read": true, 
      ".write":false, 
     }, 
     "negative": { 
     ".read": true, 
      ".write":false, 
     }, 
    } 
    } 
} 

은 이전 데이터를 제거하고 새로운 넣어.

이미 존재하는 경우 설정 값을 무시하는 서버 측에서 규칙을 작성하고 싶습니다. 당신이 updateChildValues()를 호출하면

답변

0

는, 사용자가 지정하는 속성이 업데이트됩니다

ref.child("users") 
    .child((FIRAuth.auth()?.currentUser?.uid)!) 
    .updateChildValues(["username": "MyName"]) 

Firebase documentation on updating specific fields를 참조하십시오.

트리의 상위 레벨에서 부여한 권한을 제거 할 수 없기 때문에 규칙이 작동하지 않습니다. Firebase documentation on the cascading of permissions을 참조하십시오.

"users": { 
    "$uid": { 
     ".write": "newData.hasChildren(['certain', 'properties])", 
+0

이 데이터가 이미 존재하는 노드에 기록되는 데이터를 방지합니까 :

는 사용자의 노드에 규칙을 사용하여, 사용자가 항상 특정 속성을 가지고 보장하기 위해? – Jay

+0

아니요. 그것은'! data.exists()'가 될 것입니다. –

+0

우리가 서버 측에서 데이터를 제어 할 수 없다는 것은 매우 이상합니다. 예, 솔루션이 작동 중입니다. 내가 원했던대로, 그렇게하자. –

관련 문제