0

Я следовал за this учебным пособием, чтобы сделать приложение с синхронизацией и аутентификацией firebase. Но теперь я не знаю, как сделать запрос для поиска среди всех детей, потому что у этих детей есть лексикографический ключ.запрос данных о благе среди всех детей с помощью auth

Чтобы быть более конкретным, из этого примера, как вы запрашиваете все «currentCity» от всех «пользователей»

{ 
    "users" : { 
    "1e2f048f-a3a0-4190-afad-81d724ed1997" : { 
     "currentCity" : "Arrecifes", 
     "currentCountry" : "ARG", 
     "currentState" : "BSA", 
     "day" : { 
     "domingo" : true, 
     "jueves" : true, 
     "martes" : false, 
     "miercoles" : true 
     }, 
     "gender" : "Masculino", 
     "name" : "Guillermo H Acosta", 
     "position" : "Medio", 
     "registered" : true, 
     "timeSince" : "22:00", 
     "timeUntil" : "23:00", 
     "whereToPlay" : "Güemes" 
    }, 
    "39c6ccf9-61ec-446e-9af3-3a87810fab71" : { 
     "currentCity" : "Alvear", 
     "currentCountry" : "ARG", 
     "currentState" : "CRR", 
     "day" : { 
     "jueves" : true, 
     "miercoles" : true, 
     "viernes" : true 
     }, 
     "gender" : "Masculino", 
     "name" : "Guillermo Acosta", 
     "registered" : true, 
     "timeSince" : "21:00", 
     "timeUntil" : "23:00" 
    }, 
    "4991bdc9-dfc4-4ff5-ab81-0e28f1b3ab53" : { 
     "currentCity" : "Cordoba", 
     "currentCountry" : "ARG", 
     "currentState" : "COR", 
     "day" : { 
     "miercoles" : true, 
     "viernes" : true 
     }, 
     "gender" : "Masculino", 
     "name" : "Hsjja", 
     "timeSince" : "02:00", 
     "timeUntil" : "03:00" 
    }, 
    "509364fd-388b-42ff-91ed-0811811a4ff3" : { 
     "day" : { 
     "jueves" : true, 
     "lunes" : true, 
     "martes" : false, 
     "sabado" : true 
     }, 
     "name" : "Guillermo Acosta", 
     "position" : "Delantero", 
     "timeSince" : "13:00", 
     "timeUntil" : "14:00", 
     "whereToPlay" : "Güemes" 
    } 
    } 
} 
+0

Вы включили изображение дерева JSON в вашем вопросе. Пожалуйста, замените это на фактический JSON как текст, который вы легко можете получить, нажав кнопку «Экспорт» в консоли базы данных Firebase. Наличие JSON в качестве текста делает его доступным для поиска, позволяет нам легко использовать его для тестирования с вашими фактическими данными и использовать его в нашем ответе, и в целом это просто хорошая вещь. –

+0

Спасибо за ваше предложение @FrankvanPuffelen, теперь все готово. –

ответ

1

С базой данных Firebase вы либо получаете узел, либо не получаете этот узел. Невозможно получить часть каждого узла в запросе.

Так что, если вы хотите загрузить только города всех пользователей, вы должны держать узел, который содержит только ту информацию:

{ 
    "userCurrentCities" : { 
    "1e2f048f-a3a0-4190-afad-81d724ed1997" : "Arrecifes", 
    "39c6ccf9-61ec-446e-9af3-3a87810fab71" : "Alvear", 
    "4991bdc9-dfc4-4ff5-ab81-0e28f1b3ab53" : "Cordoba", 
    } 
} 
+0

Хорошо. Я буду помнить об этом. Итак, вместо создания узла для каждого пользователя мне нужно создать узлы для каждого атрибута, в который мне нужен фильтр, в мое приложение? я прав? –

+1

В целом при использовании базы данных NoSQL вам необходимо смоделировать данные для того, как ваше приложение хочет их использовать. См. Эту статью о [Моделировании данных NoSQL] (https://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/) для отличного введения. –

0

Это будет анализировать через каждый узел захвата ключа currentCity. Если currentCity NULLABLE, я бы рекомендовал разместить его в отдельном узле.

let ref = // path to users here 
ref.observeEventType(FIRDataEventType.Value, withBlock: { (snapshot) in 
    // Put all of the users into a dictionary 
    let postDict = snapshot.value as! [String : AnyObject] 
    for user in postDict { 
     // Set each child of the user as a dictionary 
     let data = activity.1 as! [String : AnyObject] 

     // Get the specific child 
     let currentCity = children["currentCity"] as! String 

     // Do something with the data 
     print(currentCity) 
    } 
}) 
Смежные вопросы