Запрос Firebase не работает (onDataEvent не запускается) - PullRequest
0 голосов
/ 07 мая 2018

Итак, у меня есть некоторые данные в моей базе Firebase. Это структура
image

(предположим, что данных больше) Я хочу получить записи, где banknoteType = "100_dollar" и 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());
                }
            });

Но событие onDataChange не срабатывает ... Что я ошибаюсь? РЕДАКТИРОВАТЬ: я пытаюсь отладить его, и ни onDataChange, ни onCancelled точки останова на этом

РЕДАКТИРОВАТЬ 2: текущий код, который я использую, является

 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());
        }
    });

РЕДАКТИРОВАТЬ 3: https://i.stack.imgur.com/iBkcx.png

1 Ответ

0 голосов
/ 07 мая 2018

База данных Firebase Realtime не позволяет объединять несколько методов фильтрации.Если вы хотите получить записи, где: userId="1057...", измените следующую строку кода:

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

на

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

Если вы хотите получить все записи, где banknoteType ="100_dollar" и userId="1057...", пожалуйста, смотрите мой ответ из этого сообщения .

В соответствии с вашим отредактированным сообщением, пожалуйста, также измените эту строку кода:

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

до

Log.d("test", "onDataChange: "+postSnapshot.child("userId").getValue(String.class));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...