-1

So I have some data in my Firebase. It's structure is
Image

(assume that there is more data) I want to get the records where banknoteType ="100_dollar" and userId="1057..."

   DatabaseReference database = FirebaseDatabase.getInstance().getReference("userBanknoteAmount");
    Query firebaseQuery = database.orderByChild(1057...).equalTo(1057...);
            firebaseQuery.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(DataSnapshot dataSnapshot) {
                    for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                     //todo
                    }
                }

                @Override
                public void onCancelled(DatabaseError databaseError) {
                    Log.w("onCancelledError", "loadPost:onCancelled", databaseError.toException());
                }
            });

But the onDataChangeevent doesn't fire... What am I mistaking? EDIT: I am trying to debug it and neither onDataChange nor onCancelled breakpoints stop there

EDIT 2 : The current code I am using is

 DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
    DatabaseReference userBanknoteAmountRef = rootRef.child("userBanknoteAmount");
    Query firebaseQuery = userBanknoteAmountRef.orderByChild("userId");//.equalTo(userId);
    firebaseQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
                Log.d("test", "onDataChange: "+postSnapshot);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.wtf("onCancelledError", "loadPost:onCancelled", databaseError.toException());
        }
    });

EDIT 3: https://i.stack.imgur.com/iBkcx.png

pety
  • 1
  • 2

1 Answers1

0

Firebase Realtime database does not allow you to chain multiple filter methods. If you want to get the records where : userId="1057...", please change the following line of code:

Query firebaseQuery = database.orderByChild(1057...).equalTo(1057...);

with

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userBanknoteAmountRef = rootRef.child("userBanknoteAmount");
Query firebaseQuery = userBanknoteAmountRef.orderByChild("userId").equalTo(1057...);

If you want to get all the records where banknoteType ="100_dollar" and userId="1057...", please see my answer from this post.

According to your edited post, please also change this line of code:

Log.d("test", "onDataChange: "+postSnapshot);

to

Log.d("test", "onDataChange: "+postSnapshot.child("userId").getValue(String.class));
Alex Mamo
  • 130,605
  • 17
  • 163
  • 193