2016-08-13 3 views
1

Я пытаюсь запросить Firebase для ребенка, который равен определенному значению, но запустите моментальный снимок с помощью определенного почтового ключа.Firebase QueryOrderedByChild вместе с EqualToValue и StartingAtValue Комбинация

Структура данных:

projectName 
    -posts 
    -postKey1 
     -storeId: 1 
    -postKey2 
     -storeId: 2 
    -postKey3 
     -storeId:3 
    -postKey4 
     -storeId:2 
    -postKey5 
     -storeId:3 
    -postKey6 
     -storeId:2 

Пример:

Я пытаюсь queryOrderedByChild("storeId") с queryEqualToValue("2") НО я хотел бы снимок, чтобы начать на «postKey4», когда он возвращается в порядке ,

My Current Query:

ref.queryOrderedByChild("storeId").queryEqualToValue("\(myId)").observeEventType(.Value, withBlock: {snapshot in 

Я знаю, что вы не можете назвать queryEqualToValue: после queryStartingAtValue, queryEndingAtValue или queryEqualToValue после ранее называлась, но мне нужно, что queryEqualToValue, чтобы получить мой StoreID. Любая помощь очень ценится!

ответ

4

Вы можете передать второй аргумент в queryStartingAtValue, который указывает ключ для запуска.

ref.queryOrderedByChild("storeId") 
    .queryStartingAtValue(2, childKey: "postKey4") 
    .queryEndingAtValue(2) 
    .observeEventType(.Value, withBlock: {snapshot in 
     for childSnapshot in snapshot.children { 
      print(childSnapshot.key!! 
     } 
}) 

Печатается:

postKey4

postKey6

Я должен признать, что это первый раз, когда я использовать второй аргумент queryStartingAtValue, так что я не мог понять полностью.

Причина, по которой вы не можете использовать queryEqualToValue, состоит в том, что она вернет только один ключ, который вам не нужен.

Смежные вопросы