android - 如何合并 Firebase 实时数据库安全规则?
问题描述
我有多个根节点,所有这些节点的安全规则如下
".read": "auth.uid == uid"
".write": "auth.uid == uid"
如何合并以下代码,而不是一次又一次地重复相同的代码?
{
"rules": {
"node_1": {
"$uid": {
".read": "auth.uid == uid"
".write": "auth.uid == uid"
}
},
"node_2": {
"$uid": {
".read": "auth.uid == uid"
".write": "auth.uid == uid"
}
},
"node_3": {
"$uid": {
".read": "auth.uid == uid"
".write": "auth.uid == uid"
}
}
}
}
fetchUserProfile = FirebaseDatabase.getInstance().getReference( Constants.FB_PROFILE_INFO ).orderByKey().equalTo( mAuth.getUid() );
解决方案
您可以使用变量,就像现在使用 $uid 一样:
{
"rules": {
"$node": {
"$uid": {
".read": "auth.uid == $uid"
".write": "auth.uid == $uid"
}
}
}
仅当您确定所有顶级节点都具有相同的结构时,这才有意义。如果他们不这样做,您可能需要以不同的方式组织它们。节点名称没有部分字符串匹配。
推荐阅读
- reactjs - React + ASPNET Core + Prerendering:尝试以访问权限禁止的方式访问套接字
- angular - 如何将我的对象传递给 Angular 6 中的 queryParams?
- bash - 使用 2 个割变量进行除法
- python - 条件布尔值:'not' 函数抛出语法错误
- android - 如何导航到不同 Activity 中的 Fragment 目的地?
- javascript - 如何在多页应用程序中实现通量架构?
- c++ - 模板需要编译时 const 值
- selenium - Selenium 控制的浏览器无法正常工作?
- java - 单列的Spring JPA查询结果为泛型类型?
- terraform-provider-azure - 引用其他资源组中的资源