Чтобы получить всех пользователей, чей адрес электронной почты начинается с user4
:
DatabaseReference usersRef = FirebaseDatabase.getInstance().getReference().child("app-users/users");
Query usersQuery = usersRef.orderByChild("email").startAt("user4").endAt("user4\uF7FF");
usersQuery.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot userSnapshot: dataSnapshot.getChildren()) {
System.out.println(userSnapshot.getKey()+": "+userSnapshot.getChild("displayName").getValue(String.class));
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}
Чтобы понять запрос usersRef.orderByChild("email").startAt("user4").endAt("user4\uF7FF")
, прочитайте его как:
- Взять все дочерние узлы
usersRef
и упорядочите их по свойству email
. - Затем найдите первый дочерний узел, который начинается с
user4
. - Затем возвращайте каждый дочерний узел, пока не найдете дочерний.это начинается с
.endAt("user4\uF7FF")
(или далее).
В этом \uF7FF
не магический код, а только последний известный символ Unicode.Таким образом, комбинируя .startAt("user4").endAt("user4\uF7FF")
, вы создаете оператор startsWith
.