Ваш запрос выглядит нормально. Если вы хотите получить ключи запросов с request_type
равным "received"
для текущего пользователя, вы можете получить ключи следующим образом:
DatabaseReference requestDatabase = FirebaseDatabase.getInstance().getReference()
.child("Requests")
.child(currentUserId);
final List<String> senderUserIds = new ArrayList();
requestDatabase.orderByChild("request_type").equalTo("received")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot requestSnapshot : dataSnapshot.getChildren()) {
senderUserIds.add(requestSnapshot.getKey());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
РЕКОМЕНДАЦИЯ
Если вы можете изменить структуру базы данных, вы можете сгладить ее следующим образом:
{
"Requests": {
"request_id_1": {
"sender_user_id": "user_1",
"recipient_user_id": "user_2"
}
}
}
Затем вы можете запросить следующее:
DatabaseReference requestsRef = FirebaseDatabase.getInstance().getReference().child("Requests");
final List<String> senderUserIds = new ArrayList();
requestsDatabase.orderByChild("recipient_user_id").equalTo(currentUserId).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for (DataSnapshot itemSnapshot : dataSnapshot.getChildren()) {
Request request = itemSnapshot.getValue(Request.class);
senderUserIds.add(request.getSenderUserId());
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Вот класс Request
:
public class Request {
private String senderUserId;
private String recipientUserId;
Request() {
// Default constructor required for calls to DataSnapshot.getValue(Request.class)
}
Request(String senderUserId, String recipientUserId) {
this.senderUserId = senderUserId;
this.recipientUserId = recipientUserId;
}
public String getSenderUserId() {
return senderUserId;
}
public void setSenderUserId(String senderUserId) {
this.senderUserId = senderUserId;
}
public String getRecipientUserId() {
return recipientUserId;
}
public void setRecipientUserId(String recipientUserId) {
this.recipientUserId = recipientUserId;
}
}