0

私はそれがワイルドカードを使用して同じノードで参照することが可能です知っている:ワイルドカードを使用してFirebaseセキュリティルール内の他のノードのデータを参照することはできますか?

statistics: { 
    "$uid" : { 
      ".read": "($uid === auth.uid)" 
     } 
} 

しかし、私は、ワイルドカードを使用して、いくつかの他のノードにのようなものを参照を追加する必要がある場合はどのような:

statistics: { 
    .read = "root.child('users').child(//wildcard for unique ids).child('uid').val() == auth.uid" 
} 

答えて

0

私はあなたのuidを持つノードがusersコレクションにあるかどうかをチェックしようとしていると思います。これは不可能です。セキュリティルールは特定のノードにしかアクセスできず、それらを検索することはできません。

典型的なソリューションはuid sが鍵である反転コレクション、追加することです:

.read = "root.child('usersByUid').child(auth.uid).exists()" 
:このような構造とすることで

usersByUid 
    <uid1>: ... 
    <uid2>: ... 

を、あなたがキーの存在を確認することができます

一般に、ユーザーはuidの下にユーザーを保管し、他のキーでは保管しないことをお勧めします。

+0

お返事ありがとうございます。 firebaseに別のノードを追加し、提案したようにuidをキーとして追加しました。 – Mandy

+0

マンディを聞いてよかったです。私の答えが役に立つなら、その左側のupvoteボタンをクリックしてください。あなたの質問に答えた場合は、チェックマークをクリックしてそれを受け入れます。そうすれば、他の人はあなたが(十分に)助けられたことを知ることができます。 –

関連する問題