在安全规则中使用引用

Using Reference in Security Rule

假设有两个文档

/orgs/foo
/users/alice

/users/alice 有一个引用类型字段 org 引用 /orgs/foo.

/orgs/foo 应该在 request.auth.uid == 'alice' 时可以访问。我该怎么做?

我猜是这样的,但我想不通。也就是说,如何获取引用文档的ID?

function isOrgMember(orgId) {
  return get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;
}

match /orgs/{orgId} {
  allow read: isOrgMember(orgId);
}

我知道自最初的问题以来已经有一段时间了,但我遇到了类似的问题,希望这可以帮助您或其他人。

您的情况是: get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;

但是 org 是一个参考,这(显然)意味着您也需要 get 它。试试这个: get(get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org).id == orgId;