Я использую firebase в сочетании с GeoFire, это отлично работает, но мне нужен еще один запрос, и я не уверен, как это сделать.Использование методов запросов Firebase .startAt() и .endAt() для диапазонов дат
Это мой GeoFire/Firebase запрос:
var geoFire = new GeoFire(ref.child("geoFire"));
var geoQuery = geoFire.query({
center: [51.315077, 3.73261],
radius: 100 //kilometers
})
geoQuery.on("key_entered", function(key, location, distance) {
ref.child("articles").child(key).on("value", function(snap){
var x = snap.val()
DATA.push(x)
})
})
Это моя JSON базы данных в firebase:
geoFire
-JmE05U-Wbr5LGRSh0Z8
-JmE0COUFBRPZIBqwfYN
articles
-JmE05U-Wbr5LGRSh0Z8
* ...
* articlePostDate: 2015/04/26 08:00:00
* ...
-JmE0COUFBRPZIBqwfYN
* ...
* articlePostDate: 2015/04/26 12:00:00
* ...
-JmE0Iq7-uvrk5Tg_K8_
* ...
* articlePostDate: 2015/01/26 08:00:00
* ...
-JmE0MrnstNv9d_8ozQ4
* ...
* articlePostDate: 2015/04/26 15:00:00
* ...
выше GeoFire/Firebase запрос возвращает 2 статьи (но может 100 статей), это правильно.
Мой вопрос:
Как я могу продлить Firebase запрос ниже, так что я могу получить записи на основе диапазона articlePostDates? Например, все GeoFire возвратили записи с датой публикации между 2015/04/26 07:00:00 и 2015/04/26 16:00:00? Я думаю, что это с .startAt() и .endAt(), но я не уверен, как это сделать.
ref.child("articles").child(key).on("value", function(snap){
var x = snap.val()
DATA.push(x)
})
Thx для вашего консультирования.
Вы не можете комбинировать их в том, как вы предлагали здесь. Хорошей альтернативой было бы архивирование старых статей в другой список, чтобы вы получали только текущие в пути 'articles /', устраняя необходимость в дополнительной фильтрации. Если количество элементов меньше ста, также возможна простая фильтрация на стороне клиента. Объясняя фактический прецедент и ограничения, помимо предлагаемого решения, можно было бы сэкономить много догадок для поиска хорошего подхода. – Kato