Firebase startAt String принимает только первый символ - PullRequest
0 голосов
/ 06 июня 2018

У меня есть структура, подобная приведенной ниже, под xyz

{
    "pushKey000": {
        "findKey": "john_1",
        "userName": "john",
        "topic": 1
    },
    "pushKey001": {
        "findKey": "john_2",
        "userName": "john",
        "topic": 2
    },
    "pushKey002": {
        "findKey": "joel_1",
        "userName": "joel",
        "topic": 1
    }
}

Теперь я пытаюсь сделать запрос, в котором я хочу получить данные обо всех записях с помощью findKey, начинающихся с " john ".Я попробовал следующее: (Используя REST например)

https://abc.firebaseio.com/xyz.json?orderBy="findKey"&startAt="john"

Это дает мне все результаты, включая 'joel'.В основном он просто использует первый символ startAt , в данном случае J .

* * * * * * * * * * * * * * * * * * * * * * * * * запускает тот же тип запроса, но выполняет поиск только с первым символом.

Что-то не так, что я делаю, или есть какой-то другой способ получить его с помощью findKey?Заранее большое спасибо за помощь

PS: Мой .indexOn находится на findKey и не может его изменить

1 Ответ

0 голосов
/ 06 июня 2018

В вашем коде нет ничего плохого, в ваших ожиданиях что-то не так. (я всегда хотел написать это как ответ:))

Функция startAt() служит отправной точкой для вашего запроса, а не фильтром.Таким образом, в вашем случае он найдет первое вхождение слова «Джон» и вернет все с этого момента (включая Джоэла, Кевина, Тима и т. Д.).

К сожалению, прямого способа сделать это не существуетзапрос where findKey contains the string "john".Но, к счастью, есть (частичный) обходной путь с использованием endAt().

Ваш запрос будет выглядеть следующим образом:

orderBy="findKey"&startAt="john"&endAt="john\uf8ff"

Здесь \uf8ff - последний символ Unicode (пожалуйста, исправьте меня, еслиЯ не прав).

При этом вы можете запросить значения, которые начинаются с "john", например, "johnnie", "johnn", "john".Но не "1john" или "johm" или "joel".

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