【问题标题】:Firestore security rules - How to only allow certain fields in a map inside a mapFirestore 安全规则 - 如何只允许地图内的地图中的某些字段
【发布时间】:2019-10-17 19:15:55
【问题描述】:

我有一个名为“list”的文档,其中包含一个名为“list”的字段,该字段是一个映射,其中值是一个新映射,应该只包含键“color”和“description”。我正在尝试编写规则以确保键只有“颜色”和“描述”,但我似乎无法找到一种方法来限制地图内地图中的键名。

(它在单个文档中的映射映射的原因是因为我有一个安全规则,其中数组类型的字段只能包含从“list.list.keys()”指定的元素)

我试过了

request.resource.data.list.values()[request.resource.data.list.values().size()-1].keys().hasOnly(["color", "description"])
&& request.resource.data.list.values()[request.resource.data.list.values().size()-1].keys().hasAll(["color", "description"]);

但这不起作用,因为新值的索引是随机的,因为它是一个映射。

【问题讨论】:

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


    【解决方案1】:

    除非您知道list 下所有可能的值键名称(在您的情况下为“依赖项”和“测试”),否则将无法强制执行。没有通配符映射键的方法,目前也没有迭代映射键的方法。您必须知道可以添加的所有内容的完整路径,以便使用安全规则检查它们。

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 2020-09-18
      • 2020-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      相关资源
      最近更新 更多