Как выполнить вложенный запрос в базе данных реального времени firebase? - PullRequest
0 голосов
/ 31 мая 2019

Я получил данные из базы данных Firebase, внутри метода OnDataChange. Я хочу выполнить другой запрос на основе данных, которые я извлек ранее. Прежде чем перейти к другому занятию, я извлек все свои данные, используя функцию обратного вызова MyCallback. Здесь listAllRequest содержит ожидаемые данные, но userMap содержит ноль. Как я могу убедиться, что userMap содержит данные, прежде чем перейти к другому виду деятельности?

public void readRequestData(final Outgoing.MyCallback myCallback) {
        groupDatabase = FirebaseDatabase.getInstance().getReference("Users").child(user.getUid()).child("outgoing");
        userInfoRef= FirebaseDatabase.getInstance().getReference("UserInfo");

        groupDatabase.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                listAllRequest.clear();

                for(DataSnapshot childSnapshot: dataSnapshot.getChildren())
                {

                    final BookRequestData bookRequestData = childSnapshot.getValue(BookRequestData.class);
                    listAllRequest.add(bookRequestData);

                    userInfoRef.child(bookRequestData.getOwnerId()).addValueEventListener(new ValueEventListener() {
                        @Override
                        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                            User user=dataSnapshot.getValue(User.class);

                            userMap.put(bookRequestData.getReqId(),user);
                            Log.e("outgoing",user.getName());
                        }

                        @Override
                        public void onCancelled(@NonNull DatabaseError databaseError) {

                        }
                    });

                }
                myCallback.onCallback(listAllRequest);

            }
            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {}
        });

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...