Запрос Firebase по нескольким фильтрам в Swift - PullRequest
0 голосов
/ 21 февраля 2019

Итак, у меня есть следующая структура данных Firebase:

Games
    --- 20190220000_NCAA (SportID)
        --- WeekId : 1
        --- etc...
    --- 20190221000_NCAA
        --- WeekId : 2
        --- etc...
    --- 20190204000_NFL    
        --- WeekId : 1
        --- etc...
    --- etc...(SportsID)

Итак, что я пытаюсь достичь, это что-то вроде: Получить все Игры, которые NCAA относятся к неделе = 1

Который должен возвращать только 20190220000_NCAA на основе приведенного выше примера.

У меня есть следующий запрос:

gamesRef.queryOrderedByKey().queryStarting(atValue: "_NCAA").queryEnding(atValue: "_NCAA\u{f8ff}").queryOrdered(byChild: "WeekId").queryEqual(toValue: "1").observe(.value, with: { snapshot in

Так что, если я правильно понимаю, он должен запросить все «Ключи» с _NCAA какподстроку, а затем также упорядочить результат по идентификатору недели = 1 с ключами, в которых подстрокой является _NCAA ?!

Проблема в том, что он не возвращает правильный результат.

Кто-нибудь знает, как мне выполнить мой запрос?

1 Ответ

0 голосов
/ 21 февраля 2019

Код, который вы показываете, не должен компилироваться.Запросы к базе данных Firebase могут содержать только одно предложение orderBy... и никогда не могут выполнять сопоставление суффиксов (ваш _NCAA находится в конце ключа).

Чтобы разрешить использование, у вас должен быть ключ/ свойство, состоящее из номера недели и значения org (NCAA / NFL).Например,

Games
    --- 20190220000_NCAA (SportID)
        --- WeekId : 1
        --- WeekOrg : "01_NCAA"
        --- etc...
    --- 20190221000_NCAA
        --- WeekId : 2
        --- WeekOrg : "02_NCAA"
        --- etc...
    --- 20190204000_NFL    
        --- WeekId : 1
        --- WeekOrg : "01_NFL"
        --- etc...
    --- etc...(SportsID)

С этим вы можете получить узлы на 1-й неделе для NCAA с:

gamesRef.queryOrdered(byChild: "WeekOrg").queryEqual(toValue: "01_NCAA").observe(.value, with: { snapshot in

Также смотрите мой ответ здесь: http://stackoverflow.com/questions/26700924/query-based-on-multiple-where-clauses-in-firebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...