Pracuję nad aplikacją dla systemu Android przy użyciu Firebase jako zaplecza. Jestem nowicjuszem w Firebase i utknąłem z powodu problemu, a problem pojawia się, gdy próbuję wyszukać rekord, używając zapytania startAt
, zwraca wyniki, które nie zaczynają się od słowa kluczowego, które wpisuję.Android - Rozpoczęcie kwerendy FirebaseNie działa zgodnie z oczekiwaniami
Oto zestaw danych
itemname
-KK8vI8A5BZZp3Xo3FpA
name: "abc"
-KK8w3uoJdJ0hBSrq0CS
name: "test"
-KKAC1o9Vazyg9JLtDoQ
name: "dude"
A oto kod snippit
Query query = firebase.child(Constants.KEY_ITEM_NAME).orderByChild("name").startAt("abc");
query.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
Iterator<DataSnapshot> i = dataSnapshot.getChildren().iterator();
while (i.hasNext()) {
DataSnapshot d = i.next();
LOG(d.getKey(), d.getValue().toString());
}
}
Więc kiedy szukać abc
odpowiedź obejmuje również test
. Może robię coś złego lub idę źle. Czy ktoś może wskazać mi właściwy kierunek.
P. S Próbuję użyć elementu do znalezienia przedmiotów za pomocą AutocompleteTextView
.
Dzięki
Dziękuję za odpowiedź, tak Użyłem equalTo(), ale staram się korzystać z tej kwerendy w 'AutoCompleteTextView' i jeśli mam więcej rzeczy powiedzmy, że nazwy to 'abc',' abd', 'abe' i chcę wyszukać wszystkie rekordy zaczynające się od' ab'. Jak mogę to osiągnąć? – Max
Próbowałem nawet używać w ten sposób 'firebase.child (" itemname "). OrderByKey(). StartAt (" a "). EndAt (" a \ uf8ff ");' Ale zerowa odpowiedź. – Max
Działa, gdy używana jest '.orderByChild (" nazwa "). StartAt (" ab "). EndAt (" ab \ uf8ff ");' – Max