Правило Firestore разрешает проблему метки времени условия чтения - PullRequest
0 голосов
/ 08 апреля 2019

Я впервые пользуюсь 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 голосов
/ 08 апреля 2019

Попробуйте использовать duration.time(hours, minutes, seconds, nanos) (задокументировано здесь ) для манипулирования метками времени :

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

Кроме того, лично я предпочитаю указывать продолжительность после (фиксированного) времени создания ресурса, что немного облегчает мои рассуждения.

Ваш код станет

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

(Примечание: я не проверял это, и предполагается, что ваша временная метка на самом деле метка времени )

...