【发布时间】:2020-04-28 09:59:35
【问题描述】:
想想一个投票应用程序,它在 Firestore 文档中有一个地图。 该映射将投票键作为字符串,将数字作为值(计数器)。 例如“什么是最好的食物”:
{
...
...
poll : [
pizza : 10,
barbecue: 3,
pasta: 1,
...
]
...
}
项目可能因投票而异。每位用户只能投一票。只有登录的用户才能投票(Firestore 规则)。 最低金额为零,人们可以从一个切换到另一个(减少时刻)。 此外,增幅应该只有 +1。
事务保护应用程序,以避免任何项目小于 0,并且 +1 被控制在那里。 有没有办法通过 Firestore 规则来保护? 老实说,我不确定是否有必要。
我可以使用地图差异功能获取受影响的项目。但是如何检查特定更改的项目值?
map diff结果带来了一个集合,但是我不能使用request.resource.data中的集合检索到的键,否则问题就解决了。
我可以检查它是否为 0,如果差异为 1,也可以检查当前数据。
关键肯定会在地图中,因为它来自地图本身的 diff 函数。
【问题讨论】:
标签: firebase google-cloud-firestore firebase-security