1

次のデータ構造があります。

/users/$userId/profile/...
/users/$userId/job/...
/users/$userId/personal/... 

ユーザーに関するいくつかのデータを読み取り、それをリストとして表示したいとしjobますprofile。ここには 2 つの (関連する) 問題があります。

1..readセキュリティ ルールを設定するにはどうすればよいですか。私が言うなら:

"users": { 
    ".read": "auth != null",
    ...
}

その後、ルールがカスケードします。3 つの異なるパスで同じルールを 3 回複製できないのはなぜですか? パスを結合するときにエラーが発生するためです。このことを考慮:

var ref = fbutil.ref();     
var refSearch = new Firebase.util.NormalizedCollection(
                [ref.child('users'), 'usrId']
            ).select('usrId.job', 'usrId.profile').ref(); 
var result = refSearch.orderByChild("profile/name");
return $firebaseArray(result);

3 つのパスの下に 3 つの異なるルールがある場合、usrIdそれ自体を読み取ることができないため、上記は失敗します。

2.NormalizedCollectionここで使用することが最善の解決策かどうかわかりません。2 つのパスを結合する他の方法はありますか? これは、最初の問題の解決にも役立ちます。

では、 「/users/$userId」パスを読み取り可能にせずに、2 つのパス (/users/$userId/profile/と)を結合するにはどうすればよいでしょうか?/users/$userId/job/

4

1 に答える 1

0

公開データと非公開データを分離する必要がある場合は、構造のその部分を作成します。

{
    "rules": {
        "users": {
            "$user_id": {
                private: {
                    ".read": "$user_id === auth.uid"
                }
                public: {
                    ".read": "true",
                    "job": {},
                    "profile": {}
                }
            }
        }
    }
}
于 2016-10-13T19:58:35.787 に答える