【发布时间】:2017-04-29 11:15:56
【问题描述】:
如果您想在一个节点中保存多个相同类型的子节点,childByAutoId 会很有用,这样每个子节点都有自己的唯一标识符。
List:{
KJHBJJHB:{
name:List-1,
owner:John Doe,
user_id:<Fire base generated User_id>
},
KhBHJBJjJ:{
name:List-2,
owner:Jane Lannister,
user_id:<Fire base generated User_id>
},
KhBHJZJjZ:{
name:List-3,
owner:John Doe,
user_id:<Fire base generated User_id>
}
}
我正在尝试借助以下代码访问List:
let ref = FIRDatabase.database().reference(withPath: "/List")
当前登录应用的用户是John Doe。当用户访问列表时,我想要所有者为 John Doe(即 List-1 和 List-3)的所有 List 子值,并忽略其他子值。
我必须在我的应用程序中执行此操作,还是可以通过 Firebase 安全规则来实现?
我目前的规则定义是:
"List":{
".read": "root.child('List/'+root.child('List').val()+'/user_id').val() === auth.uid" }
但是这条规则并没有给我任何成功。知道如何达到预期的效果吗?
【问题讨论】:
-
您是否尝试过使用查询?
-
@gasho 是的,使用查询我可以拉下整个分支,然后只保留我需要的那些。但实际上我正在尝试从 firebase 本身提取所需的数据,这样我就不必在我的应用程序端运行任何查询。
标签: ios swift firebase firebase-realtime-database firebase-security