Firestore Queries Swift 4 для диапазона - PullRequest
0 голосов
/ 01 мая 2018

Я хочу задать вопрос, связанный с быстрыми запросами в пожарных. У меня есть структура пожарного депо как ниже:

enter image description here

В настоящее время я разрабатываю поисковую систему, где пользователь может фильтровать min и max человек на team. ниже приведены запросы для .collection("team")

Firestore.firestore().collection("team")
.whereField("min", isGreaterThanOrEqualTo : filterMin)
.whereField("max", isLessThanOrEqualTo : filterMax)

Ожидается: если место пользователя filterMin = 0 и filterMax = 600, данные для team1 и team2 будут отображаться, если место пользователя filterMin = 3 и filterMax = 500, только данные для team2 будет отображаться.

Но проблема в том, что если я использую код выше, я получаю ошибку, как показано ниже

'Неверный запрос. Все где фильтры с неравенством (меньше, чем lessThanOrEqual, moreThan, или moreThanOrEqual) должен быть на то же поле Но у вас есть фильтры неравенства для 'min' и 'max' '

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

Ответы [ 2 ]

0 голосов
/ 01 мая 2018

Облачное хранилище пожаров в настоящее время не позволяет выполнять несколько фильтров неравенства. Обходной путь может состоять в том, чтобы выполнить первый запрос .whereField, а затем, когда у вас есть документы, отфильтровать массив для второго запроса.

    Firestore.firestore().collection("team")
    .whereField("min", isGreaterThanOrEqualTo : filterMin)
        .getDocuments { (snapshot, error) in
            if let snapshot = snapshot {
                for document in snapshot.documents {
                    let data = document.data()

                    //parse your data into an array of teams
                }
            }

            let filteredTeams = teams.filter { $0.max < filterMax }    
    }
0 голосов
/ 01 мая 2018

Вы не можете иметь оператор неравенства для нескольких полей, поле в вашем существе может быть как минимальным, так и максимальным. Firestore поддерживает только один оператор inEquality (<,>, <=,> =), а затем столько операторов eqaulity (==), сколько вы хотите.

Подробнее об этом можно прочитать в «Сложных запросах» здесь

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