firebase - 使用规则防止用户在 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' 方法在更新时查看请求和资源之间的变化,这可能是获取随机映射键的一种方式,因为我一次只会添加一个映射,但不确定如何实现它。
任何帮助将不胜感激,或者如果这真的不是解决方法,请告诉我:)
解决方案
推荐阅读
- c# - Selenium - 循环遍历元素检查集合是否有值
- javascript - 奥赛罗有效移动算法不起作用javascript
- spring-boot - JdbcTemplate 有什么方法代替 try-catch 块?
- powershell - 为了使用 powershell 重置 MFA,我的用户应该具有什么角色?
- routes - HERE标准项目为什么要空地图?
- c# - 试图在 url 中传递 base64url 编码的令牌,但它一直失败
- c# - 返回列表的前 50%,同时在对象属性之间平均拆分行
- django - django - 在创建视图中迭代模型并返回内联表单集
- laravel-backpack - 会话语言环境背包
- python-3.x - 创建子类的对象时出现问题