Запросы к базе данных Firebase Realtime не работают - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь получить некоторые значения вместо других.На самом деле я хочу искать пользователей по их именам.

Я пытался использовать queryStarting(atValue: input) и queryEnding(atValue: "u{f8ff}"), но не смог найти правильного решения.

let input = searchInput.text?.lowercased()
print("Search for \(input!)")
let ref = Database.database().reference().child("Usernames").queryStarting(atValue: input).queryEnding(atValue: "u{f8ff}").queryOrderedByKey()

ref.observeSingleEvent(of: .value) { (snapshot) in
    if snapshot.exists() {
        for users in snapshot.children.allObjects as! [DataSnapshot] {
            let user = users.value as? [String:AnyObject]
            let id = user?["id"] as! String
            Users.init(userId: (id))
            print(users.key)
        }
    }
}

Как видите, я также добавил queryOrderedByKey().Если я не добавлю эту часть, она ничего не получит.Я хочу только получить значения, начиная с того, что я пишу в текстовом поле.

Usernames
----- charles
----------id: charles's uid
----- pierre
----------id: pierre's uid
----- bob
----------id: bob's uid
----- lu
----------id: lu's uid

Проблема заключается в том, что, например, если ввод «L» (для поиска lu), он получает [lu].Затем, если ввод «Bo» (для поиска bob), он извлекает [lu] и [bob], а не только [bob], как я хочу.И, очевидно, если ввод «C» (для поиска bob), он получает [lu], [bob], [pierre] и, наконец, [charles].

1 Ответ

0 голосов
/ 21 мая 2019

Ваш текущий запрос начинается с вашего ввода, который является правильным, но заканчивается на u{f8ff} - то есть, если вы начнете bo, вы также получите слова, начинающиеся с c, d и т. Д.

То, что вам нужно сделать, это закончить на максимальном значении, которое начинается с вашей строки, например, для ввода bo вы бы хотели закончить на bo\u{f8ff}. Вы можете сделать это, объединив свой ввод с этим значением Unicode, т.е.

...queryEnding(atValue: input + "\u{f8ff}")... // <-- Also note that the unicode character is escaped here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...