Если вы добавляете несколько условий к запросу в Firestore, условия объединяются с операцией AND.Таким образом, ваш запрос запрашивает horaries
начало до dateTime
И после dateTime
.Это пустой набор, потому что ни одно значение не может быть до и после в одно и то же время.
Общий подход для получения одного ближайшего элемента состоит в объединении двух запросов: один, который запрашивает первый элемент до,и еще один , который впоследствии запрашивает первый элемент:
db.collection("horaries")
.where("startat", "<=", dateTime)
.get()
.then(function(querySnapshot) {
if (querySnapshot.empty) {
db.collection("horaries")
.where("startat", ">", dateTime)
.get()
.then(function(querySnapshot) {
...
Как вы можете видеть, он использует то же количество запросов, что и у вас, поскольку я объединил проверку на равенство впервый запрос.