2017-06-24 24 views
1

私は2つのメガ親ノードを持っていますが、現在は2番目のノードに書き込むことができません。Firebaseユーザ権限

-users 
    uid 
     some other info 
    uid 
-secondParent 
    child 
     uid 
    child 
     uid 

私は、ユーザーがsecondParentの自分の子供に書くことができるようにしたいと思います。ユーザーの親ノードに対して、読み取りと書き込みのアクセス許可が正しく機能していますが、secondParentで動作するようにはできません。

私が現在持っているルールがある:以下

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "auth != null", 
     ".write": "$uid === auth.uid", 
     } 
    }, 
    "parentdNode": { 
     "$childID":{ 
     ".read" : "auth != null", 
     "$uid":{ 
      ".write": "$uid === auth.uid", 
     } 
     } 
    } 
    } 
} 

シミュレーションの失敗: Simulation

+0

問題の原因を特定するのに十分な情報がありません。この場合、最小限のコード(つまり、失敗する操作)、ルール、およびJSONを含む[MCVE](http://stackoverflow.com/help/mcve)を提供してください問題を再現するために必要です。 –

答えて

1

あなたはスクリーンショットによる許可

{ 
    "rules": { 
    "users": { 
     "$uid": { 
     ".read": "auth != null", 
     ".write": "$uid === auth.uid", 
     } 
    }, 
    "parentdNode": { 
     "$childID":{ 
     "$uid":{ 
      ".read" : "auth != null", 
      ".write": "$uid === auth.uid", 
     } 
     } 
    } 
    } 
} 
+0

編集については上記を参照してください。あなたの答えは私の状況にかなり当てはまるとは思わない。 – Latcie

+0

私は編集したコードを試しましたが、シミュレータでさえ失敗しました。私はparentNode/$ childIDを作成することができないようです。 – Latcie

+0

私は上記のコードをチェックして、シミュレータでうまくいきます。それらのスクリーンショットを投稿することができます。私たちが指摘するのは簡単になります – Prags

1

を有効にするには、各親のためのルールを記述する必要があります{"uid":"X","property":"Y"}/parentNode/someNodeに書き込もうとしています。この規則は{"property":"Y"}/parentNode/someNode/65ef..aa62に書き込む許可を与えます。

JSONツリーにはキーと値のペアがあります。あなたが提示したスキームにはuidというキーはありません。$uidがアクセスしているパスのa値に置き換えられています。

まだ分かりにくいかもしれませんが、この点がアイデアを明確にすることを願っています。

+0

私はユーザーがparentNodeを作成するフラットな構造を実装しようとしていますが、実際にparentNodeはそのユーザーに属するので、それに誰かが読むことができます。私はあなたのことを理解しています。私は何をする必要があるのですか? – Latcie

+1

@Latcie 'secondParent'ツリーは、どのユーザーがそれぞれのparentNodeを作成したかを知る方法を必要とします。したがって、作成者のuser-idをすべての' parentNode'と 'uid"とにかくやってみたいもの)。ルールは、 'auth.id'を' parentNode'の '' uid "'フィールドの値と照合する必要があります。何かのように: '' .write ":"!data.exists()&& newData.child( 'uid').Val()== auth.uid "' –

+0

はい、うまくいきました。もしあなたが望むなら、もう1つの質問。 (!data.exists()&& newData.child( 'uid').val()== auth.uid)|| data.child( 'uid').val()== auth.uidは、データが存在する場合、ユーザーはuidがauth.idと同じである場合にのみ書き込むことができることを意味します。 – Latcie

関連する問題