Firebase实时数据库规则:允许在列表uid中进行编辑

时间:2020-04-25 15:29:11

标签: firebase firebase-realtime-database

我尝试使用write允许auth.uid in ['ciAujxIqXQSdaaaaaaaaaa', 'bbb']使用uid列表,但这不是正确的语法,我该怎么做?

{
     "rules": {
        "orders": {
            ".read": "auth != null",
            ".write":  "(data.child('uid').val() == auth.uid) || auth.uid in ['ciAujxIqXQSdaaaaaaaaaa', 'bbb']",
            ".indexOn": ["negative_epoch"]
        },
        "users": {
                ".read": "auth != null",
                ".write": "auth != null",
        },
     }

}

1 个答案:

答案 0 :(得分:1)

实时数据库的安全规则语言中没有in操作。因此,您必须自己做:

"(data.child('uid').val() == auth.uid) || auth.uid == 'ciAujxIqXQSdaaaaaaaaaa' || auth.uid == 'bbb'"

我通常发现以这种方式添加2或3个UID之后,我在数据库中创建了一个新的顶级列表来保存这些UID:

"admins": {
  "ciAujxIqXQSdaaaaaaaaaa": true,
  "bbb": true
}

然后检查我规则中的那个列表:

"(data.child('uid').val() == auth.uid) || root.child('admins').child(auth.uid).exists()"