This is my structure:
{
users: {
"aufgdheyrl": {
id: "152",
name: "Joe Jackson",
level: "A2",
point: 120.0
},
"yudwjwnecj": {
id: "134",
name: "Samnuel Jackson",
level: "B3",
point: 80.5
},
"fuwhdkcjdo": {
id: "188",
name: "Jack Jack",
level: "B2",
point: 50.0
}
}
}
this is my code for get the selected user only if its level or point value is greater than another one. But the query doesnt't work.
I use mDatabase.child("users").child(id_client)
for getting the reference of the selected user.
DatabaseReference mUserRef = mDatabase.child("users").child(id_client);
Query query1 = mUserRef.orderByChild("level").startAt(level);
Query query2 = mUserRef.orderByChild("point").startAt(point);
query1.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "datasnaphot " + dataSnapshot.toString());
User user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
}
});
query2.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.d(TAG, "datasnaphot " + dataSnapshot.toString());
User user = dataSnapshot.getValue(User.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
// Getting Post failed, log a message
Log.w(TAG, "getUser:onCancelled", databaseError.toException());
}
});
for example I have this values:
String id_client = "aufgdheyrl";
double level = 200.0;
String point = "A1";
both query1 and query2 return object but query1 must have null value and not user object Idem if I have level="B1", the query2 return user object and not null value