Firestore安全规则-如何仅在地图内部允许地图中的某些字段

时间:2019-10-17 19:15:55

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

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

example

(之所以在singel文档中绘制地图是因为我有一个安全规则,其中array类型的字段只能包含从“ 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"]);

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

1 个答案:

答案 0 :(得分:0)

除非您知道list下的值的键的所有可能名称(如果可以,则为“ Dependencies”和“ Testing”),将无法强制执行。无法通配映射键,并且目前无法迭代映射键。您必须知道可以添加的所有内容的完整路径,以便使用安全规则进行检查。