NEW ANSWER: Я немного подумал об этом, я думаю, что на самом деле у вас есть решение в вашей оригинальной идее. Для каждого бизнеса есть список ListProperty в магазине, который хранит только время, когда бизнес открыт, как и в настоящее время. Затем рассчитать текущее время, и вокруг него до ближайшего получаса, поэтому 12:50 -> 1200, а затем сделать запрос
now = 1200
Select * FROM Business WHERE now in hours
Я не уверен, о правильном синтаксисе запроса GQL, но определенно «в» фильтре.
OLD ОТВЕТ (Не читать): я делаю что-то подобное, я на самом деле не имеет решения, для «попробовать что-то другое», за исключением.
Во-первых, вам нужно хранить как открытые, так и закрытые времена. Либо как два отдельных поля, либо закодировать их в одно поле, например «09001700» для 9-5, или даже «M09001700». Или хэш два в ряд, я не думаю, что это имеет огромное значение, независимо от того, как вы это делаете.
Тогда плохие новости. Я не особенно хорош в теории чисел, но то, что мы пытаемся сделать здесь, это кодировать два линейных набора чисел (время открытия и закрытия) таким образом, чтобы вы могли сравнить линейное или < на третьем номере который представляет «сейчас». Я не думаю, что это возможно, вы можете получить только успешное> или < сравнение по одному из двух чисел - открытию или закрытию. Поэтому, учитывая, что мы можем выполнять только одно неравенство по одному свойству, я не думаю, что один единственный изолированный запрос может изолировать только открытые хранилища.
Я также не думаю, что вам нужно сделать два запроса, вам нужно всего лишь сделать один запрос, скажем, часы работы, а затем пропустить их, чтобы посмотреть, какие из них закрыты. Если вы
Вам не обязательно нужно И два больших набора вместе. Вы можете запросить все элементы, где теперь> opentime, и вручную фильтровать результаты поиска, где теперь находится < closeetime.Если вы отсортируете запрос, основанный на закрытии, это должно сделать фильтрацию несколько проще.
Решение, с которым я в конечном итоге отправился, может работать для вас, заключается в том, чтобы не запрашивать часы магазина вообще, а запрашивать то, что вернет более ограниченный набор данных, а затем отфильтровать возвращенные результаты на основе часов хранилища , Например, если ваши пользователи ищут по местоположению, запрашивают ваши предприятия на основе местоположения и фильтруют полученный бизнес по времени магазина, тогда отображаются только открытые для пользователя.
Да, большой стол также имеет ограничение только на допущение неравенства по одному свойству, хотя моя попытка использовать список. Если у меня есть, возможно, 9000 записей, которые мне нужно запросить, в вашем двух решениях запроса у меня появятся два довольно больших запроса, которые у меня есть, и после факта. Это фактически умножается, потому что у бизнеса действительно может быть несколько открытых и закрытых пар за день. – scottzer0