Google cloud firestore FIrebase规则:如何使用$访问祖先节点';谁的数据?

Google cloud firestore FIrebase规则:如何使用$访问祖先节点';谁的数据?,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,目标:只有经过身份验证的“所有者”用户才能在“某些集合”中读取/写入其文档 示例查询:/users/peter/some collection/myDoc 用户节点有一个字符串uid字段,这在许多Firebase规则示例中很常见 我已经阅读了所有的文档,它说您可以在路径中放置一个{variable},并使用$引用它,但我无法使用在线数据库规则编辑器“编译”此规则: rules_version = '2'; service cloud.firestore { match /databases/

目标:只有经过身份验证的“所有者”用户才能在“某些集合”中读取/写入其文档

示例查询:/users/peter/some collection/myDoc

用户节点有一个字符串uid字段,这在许多Firebase规则示例中很常见

我已经阅读了所有的文档,它说您可以在路径中放置一个{variable},并使用$引用它,但我无法使用在线数据库规则编辑器“编译”此规则:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{user}/some-collection/{doc} {
        allow read, write: if request.auth.uid == $(user).data.uid;
    }
  }
}
我试图通过在用户/帐户级别验证uid来允许访问用户的子集合

它不喜欢美元符号:

保存规则时出错-第26行:意外的“$”

从路径中的通配符获得的
$(用户)
是字符串值,而不是文档

如果要访问
/users/{user}
文档中的数据,可以:


我不清楚你想做什么。对于有关安全规则的问题,显示规则应该允许的实际查询总是很有帮助的,它确切地说明应该匹配哪些文档以及它们包含哪些内容。
allow read, write: 
      if request.auth.uid == get(/databases/$(database)/documents/users/$(user)).data.uid;