Если свойства startTimestamp
и endTimestamp
существуют в базе данных и имеют тип Date
и , а не String или Number, то вы можете просто использовать запрос, чтобы проверить, является ли конкретная датав пределах границ или нет.
Например, в Android, если вы хотите проверить, находится ли определенная дата в пределах границ, вы можете подумать, что запрос, подобный приведенному ниже, будет работать:
eventsRef.whereGreaterThanOrEqualTo("startTimestamp", yourDate)
.whereLessThanOrEqualTo("endTimestamp", yourDate);
Но это не так. Вы получите исключение со следующим сообщением:
Все, где фильтры, кроме whereEqualTo (), должны находиться в одном поле. Но у вас есть фильтры для 'startTimestamp' и 'endTimestamp'
Единственное решение, которое у вас есть, - это создать три отдельных запроса.
Редактировать:
Согласно вашему комментарию, один запрос должен проверить, является ли ваш yourDate
раньше startTimestamp
eventsRef.whereLessThanOrEqualTo("startTimestamp", yourDate);
Если это так, это означает, что это наступающее событие.
Вторым было бы посмотреть, не терется ли оно больше, чем startTimestamp
:
eventsRef.whereGreaterThanOrEqualTo("startTimestamp", yourDate);
Где у нас есть два случая. В одном случае вы выполняете новый (третий) запрос, чтобы проверить, являются ли данные меньше endTimestamp
:
eventsRef.whereLessThanOrEqualTo("endTimestamp", yourDate);
Если это так, это означает, что событие находится в пределах, поэтому оно является действующимВ противном случае событие будет больше, чем то, что означает, что событие завершено.
Чтобы получить эти данные в режиме реального времени, вы должны использовать прослушиватель снимка для каждого запроса.