首页 > 解决方案 > 使用规则防止用户在 Firebase Firestore 文档内的地图中添加不需要的数据

问题描述

我在 Firebase Firestore 的用户个人区域内的集合中有一个文档(myLists):

.../users/{userID}/data/myLists

用于保留有关用户拥有的所有不同列表的最少信息是地图形式,因此有多个地图以唯一 id 作为键,然后是带有键“标题”和值字符串的字段(我已经已说明为下面的键:值对):

[
    'bb28fd2a-1001-475f-be58-6da84054a274': ['title': 'My fav list'],
    'd615136b-ebaf-4ba3-8b69-287320e801fd': ['title': 'My second fav list']
]

这是我让客户写信的地方,只有一个标题和一个 UUID,以便创建他们的新列表,然后我使用云功能在我的顶级“列表”集合中创建一个新文档。

我想阻止用户向数据库中写入除 listID 和列表标题(如上所示)之外的任何其他内容,但我正在努力,因为它在技术上是地图中的地图。

我知道,如果我的文档中只有单个字段,那么这样做的一种方法可能是:

allow update: if request.resource.data.keys().hasOnly(['title']);

但是因为每次创建新列表时我都会在文档中添加一个新地图,并且地图的键是一个随机的唯一 ID,所以我不知道该怎么做。

我知道我可以使用 'diff' 方法在更新时查看请求和资源之间的变化,这可能是获取随机映射键的一种方式,因为我一次只会添加一个映射,但不确定如何实现它。

任何帮助将不胜感激,或者如果这真的不是解决方法,请告诉我:)

标签: firebasegoogle-cloud-firestore

解决方案


推荐阅读