2016-06-16 5 views
2

Если у меня есть следующая структура в Firebase:запросов между двумя другими значениями в Firebase

{ 
    "images": { 
    "first_image": { 
     "url": "https://ima.ge/first_image", 
     "uploader": "john", 
     "start": "1465920841", 
     "end": "1466920841" 
    }, 
    "second_image": { 
     "url": "https://ima.ge/second_image", 
     "uploader": "louis", 
     "start": "1465920987", 
     "end": "1476920987" 
    }, 
    "third_image": { 
     "url": "https://ima.ge/third_image", 
     "uploader": "peter", 
     "start": "1465920990", 
     "end": "1484920990" 
    } 
    } 
} 

Можно ли запросить, например, все изображения, где текущая метка времени между «старт» и «конец» ? Поэтому, если текущая временная метка (которая составляет миллисекунды с эпохи Unix) равна 1475920987, она вернет second_image и third_image, но не first_image, потому что временная метка не находится в диапазоне начала и конца.

Я боюсь, что это невозможно, потому что в других вопросах stackoverflow пользователи указали, что несколько запросов невозможно. Поэтому, если я хочу сделать систему голосования, в которой пользователь может решить, когда другим разрешено голосовать, можно ли показывать пользователям только рекламные изображения? Даже если несколько запросов не разрешены?

Я использую SDK для iOS и Android Firebase, но ответ на конкретный язык не требуется.

+0

Был аналогичный вопрос несколько месяцев назад, но я не могу найти его прямо сейчас. Я не думаю, что мы нашли там решение. Проблема в том, что запросы Firebase могут фильтроваться только одним свойством, поэтому вам нужно найти способ объединить два значения в одно свойство таким образом, чтобы разрешить фильтрацию, которую вы ищете. Как сказал: тогда я не мог думать об одном, но, возможно, кто-то еще придумает решение на этот раз. –

+0

Может быть не оптимальным, но вы можете попробовать использовать вложенные запросы для фильтрации. Например, загрузите все по концам и затем отфильтруйте его вторым запросом. –

ответ

0

Вы можете использовать как queryStarting(atValue:), так и queryEnding(atValue:) в одном запросе.

Так что вам нужно что-то вроде:

let query = Database.database().reference().child("images") 
    .queryStarting(atValue:<startTimestamp>) 
    .queryEnding(atValue:<endTimestamp>) 
Смежные вопросы