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, 
     }, 
    } 
    } 
} 

古いデータを削除し、新しいを置きます。

サーバー側にルールを書きたいと思います。既に存在する場合は設定値を無視します。

答えて

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

サーバー側のデータを制御できないというのは非常に奇妙です。はい、ソリューションが機能しています。私が望んでいた通りではありません。 –

関連する問題