Проверка данных Firebase на основе временных меток - PullRequest
0 голосов
/ 03 августа 2020

Мне нужно правило проверки, которое проверяет, находится ли дата окончания после даты начала, поэтому период действителен. Я нашел пару ресурсов, но не смог использовать их, чтобы получить то, что мне нужно. Возможно, для кого-то еще это будет полезно.

В принципе, у меня есть документ, поступающий в облачный хранилище, и мне нужно проверить, если значение dateEnd> dateStart . Оба исходят из одного запроса. Я бы предпочел хранить значения как день / месяц / год, а не как значение временной метки. Однако, если нет другого решения, кроме использования меток времени, я мог бы использовать это.

Я не могу продвинуться дальше этого:

match /organisations/{orgID}/people/{userID} {
    allow create: if(dateEnd > dateStart)
}

Заранее спасибо за вашу помощь

1 Ответ

2 голосов
/ 03 августа 2020

Если вы используете формат даты, например ГГГГММДД (который позволяет лексикографию c порядок дат), следующее должно помочь. Он также будет работать с отметками времени в миллисекундах.

match /organisations/{orgID}/people/{userID}
  allow create: if request.resource.data.dateEnd > request.resource.data.dateStart;
}

Как объяснено в do c, «При записи данных ... переменная request.resource содержит будущее состояние документ ".

Я бы посоветовал вам посмотреть официальное видео о правилах безопасности , обязательно посмотреть ...

Если вам абсолютно необходимо сохранить значения как DD / MM / YYYY в документе Firestore, у вас должно быть две пары полей: пара полей dateEnd / dateStart в формате DD / MM / YYYY и другая пара полей, например dateEndForRules / dateStartForRules в формате ГГГГММДД, который вы используете только в правилах безопасности.

...