Как получить конкретные результаты данных Firebase на основе предпочтений пользователей в IOS?

Я новичок в firebase, просто изучаю, я хочу создать параметр фильтра для пользователей, чтобы получать конкретную информацию о других пользователях для моего приложения. Поэтому я хочу получить определенные данные пользователей firebase на основе выбора пользователей в моем табличном представлении. Например, если пользователь выбрал (мужчина, США, средняя школа), я хотел бы отображать в моем представлении таблицы все имена пользователей, чьи Country = «USA», пол = «Male» и school = «High School». Я пробовал этот код ниже только для одного варианта (пол), но я не знаю, как это сделать для других вариантов. Запросы (школа, страна)  введите описание изображения здесь . был бы признателен, если бы вы могли показать мне, как это сделать. Благодарность

  let ref = Database.database().reference()

  ref.child("users").queryOrdered(byChild: "Gender").queryEqual(toValue: genderLbl.text) // "genderLbl.text = "Male"

person user3700449    schedule 29.08.2017    source источник


Ответы (1)


Как вы, вероятно, уже знаете, Firebase - это система баз данных без sql, что означает, что вы не можете получать данные, как в базе sql с запросами, нет никаких отношений между элементами. Вы должны думать о своей модели с точки зрения того, какие данные вы хотите получить.

Ваша задача - создать путь, по которому вы помещаете ссылку (при создании пользователя) на всех пользователей из США, мужчин, из старшей школы, по имени Джеймс, например:

- Users
- UsersByCountry
    - USA
         - Male
             - HighSchool
                 - James
                     - 846efz-ezf4z6e-zef6ze4f8 (id of the user)
                     - 846efz-315da3z-az5z5e422
                     - 846efz-azd5a7z-dafg4g5ej
                 - Alfred
                 - Robert
             - ElementarySchool
         - Female
    - UK
    - Canada

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

person Damien Bannerot    schedule 29.08.2017