在规则中访问文档ID的前几个字符

时间:2018-06-25 18:37:01

标签: firebase google-cloud-firestore firebase-security-rules

我想获取文档ID,并将该ID的前X个字符与字符串进行比较,以便特定的UID可以访问带有该前缀的所有文档。

暂时忽略前缀,我尝试使用resource.id比较完整的文档ID,但是客户端应用程序拒绝了权限。仅比较request.auth.uid才授予权限,所以这不是客户端问题。

service cloud.firestore {
  match /databases/{database}/documents {
     match /collectionA/{x} {
        allow read: if request.auth.uid == 'ABCD1234' && resource.id == '00153@1529943514.26';
    }
  }
}

1 个答案:

答案 0 :(得分:2)

根据您的规则,glBindFragDataLocation是文档ID字符串,因此您可以将其与而不是resource.id进行比较(也许尚未确定用户是否可以访问该资源的任何属性)。 / p>

您可以通过多种方法检查String的内容(一定要阅读该链接)。

您可以使用索引语法提取子字符串:

x

您还可以使用matches()应用正则表达式来检查字符串的开头:

x[0:2] == 'abc'  // the first three characters of the string x