在安全规则中使用引用

Ray*_*kai 6 firebase firebase-security google-cloud-firestore

假设有两个文件

/orgs/foo
/users/alice
Run Code Online (Sandbox Code Playgroud)

/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);
}
Run Code Online (Sandbox Code Playgroud)

小智 2

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

你的条件是: get(/databases/$(database)/documents/users/$(request.auth.uid)).data.org.__id__ == orgId;

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