次のデータ構造があります。
/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/