在 Firebase authz 规则中使用数组

Using arrays in Firebase authz rules

我有一个自定义的 FB 令牌,可以解密为如下内容

{
    "uid" : "fred"
    "d" : {
        "roles" : [
            "foo",
            "bar"
        ]
    }
}

现在我想锁定我的数据,以便只有具有 foo 角色的用户才能访问数据。我该如何编写 Firebase authz 规则来做到这一点?我试过这样的东西,但它不会编译。我认为它不喜欢 indexOf() 方法。

{
    "rules": {
        ".read": "auth != null && auth.role != null && auth.role.indexOf('foo') > 0",
        ".write": false,
}

给我以下错误:

Type error: Function call on target that is not a function.

我重构了我的 JSON 格式如下:

{
    "uid" : "fred"
    "d" : {
        "roles" : {
            "foo" : true,
            "bar" : true
        }
    }
}

我的 authz 规则

{
    "rules": {
        ".read": "auth != null && auth.role != null && auth.role['foo'] == true",
        ".write": false,
}