TLDR:DBアクセスルールを設定して、指定したエンドポイントから権限を持つすべてのアイテムを読み取るにはどうすればよいですか?Firebase - エンドポイントからの読み取りアクセス権を持つアイテムを取得する
私はFirebaseデータベース内のデータの同様のセットがあります。私はまた、アプリケーションのユーザーのリストを持っている
"employees" : [ {
"first_name" : "Constance",
"last_name" : "Smith",
"createdBy: "vdBoGzI2i9f12er6ZcPjG9AiTip2"
}, {
"first_name" : "Agatha",
"last_name" : "Carlton",
"createdBy: "Tpg1mFR99meDV2QGT44pU6y7s1T2"
},
...
}
を:
"users" : {
"Tpg1mFR99meDV2QGT44pU6y7s1T2" : {
"name" : "Alex Lund",
"isAdmin": true
},
"vdBoGzI2i9f12er6ZcPjG9AiTip2" : {
"name" : "David Peterson",
"isAdmin": false
},
...
},
基本的なユーザーは、ちょうど彼らが作成した従業員へのアクセス権を持っています;管理者はすべてを読むことができます。このルールでは
{
"rules": {
".write": "auth != null",
"employees": {
"$employee": {
".read": "root.child('users').child(auth.uid).child('isAdmin').val() === true || data.child('createdBy').val() === auth.uid"
}
},
}
、管理者がref.child('/employees/0')
を読み取ることができますが、ref.child('employees')
にアクセスすることはできません。
私はどのように私が読むことができる従業員を得ることができますか?クエリを実行するのは唯一のソリューションですか?
フランクの偉大な答え、および関連するリファレンスリンク – davidey