如何在Firebase实时数据库中执行嵌套查询?

时间:2019-05-31 19:57:22

标签: android firebase firebase-realtime-database

我从OnbaseChange方法内部的firebase数据库中获取了数据,我想根据之前获取的数据执行另一个查询。在进行其他活动之前,我使用回调函数MyCallback提取了所有数据。这里的listAllRequest包含期望的数据,而userMap包含null。在进行其他活动之前,如何确保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) {}
        });

    }

0 个答案:

没有答案