【问题标题】:Rules Cloud Firestore规则 Cloud Firestore
【发布时间】:2020-03-07 23:42:06
【问题描述】:

我想知道是否可以跨集合来设置规则。 也许通过混合exists()get()

我的Collection是这样的:

- BusinessOwners
      |
      |_ autoID ___ businessID: String
                 |_ userID: String
      |
      |_ autoID ___ businessID: String
                 |_ userID: String

我想检查(用我的话)是否:

  1. 存在 DocumentBusinessOwners
  2. userID == request.auth.uid && businessID == IDspecified

我的比赛部分是这样的:

function isOwnerOfTheBusiness(IDspecified){
    return ???;
}

match /userresults/{docID} {
        allow write, read: if isOwnerOfTheBusiness(request.resource.data.businessID);
}

我可以这样做吗?如果是,怎么做?

【问题讨论】:

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


    【解决方案1】:

    这不可能完全按照您的描述,因为您无法在安全规则中执行查询。您可以访问除正在访问的文档之外的文档的唯一方法是您知道完整路径,包括文档 ID。如果您知道路径,则可以在该路径中使用 get()exists()。但是你不能查询有条件的集合。

    【讨论】:

    • 完全正确。刚刚自己尝试过,但 get() 函数中不允许使用通配符。首先我真的不敢相信,所以我检查了三次。我认为这样的规则太耗时了。如果他真的想在安全规则级别解决问题,他似乎需要进行一些重构。
    猜你喜欢
    • 2021-06-21
    • 2020-10-27
    • 1970-01-01
    • 2019-12-15
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2018-04-05
    • 2020-11-27
    相关资源
    最近更新 更多