Firestore规则允许读取条件时间戳记问题

时间:2019-04-08 08:19:30

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

我是第一次使用Firestore,但遇到问题,如果邮件发送时间少于5分钟,但我无法使用,我想允许阅读。

service cloud.firestore { match /databases/{database}/documents { match /locations/{allDocuments=**} { allow read: if request.time < Timestamp.fromMillis(resource.data.timestamp) + duration.time(0, 5, 0, 0) allow write: if true; } } }

每个数据都有一个子调用“ timestamp”,其值是一个类似于“ 1554710156002”的数字

在这种读取条件下,我的应用无法读取任何内容,但可以写入。 有人知道问题出在哪里吗?

1 个答案:

答案 0 :(得分:0)

尝试使用duration.time(hours, minutes, seconds, nanos)(记录在here中)来操纵timestamps

duration.time(0, 5, 0, 0)

此外,我个人的偏好是将持续时间放在(固定的)资源创建时间之后,这使我的推理变得容易一些。

您的代码将变为

allow read: if request.time < resource.data.timestamp + duration.time(0, 5, 0, 0);

(注意:我没有验证这一点,这是假设您的时间戳实际上是timestamp