在安全规则中使用引用

时间:2017-10-07 09:10:28

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

假设有两个文件

/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);
}

1 个答案:

答案 0 :(得分:1)

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

你的条件是: 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;