如何在Firebase中执行联接查询?

时间:2016-12-14 05:46:14

标签: android join firebase firebase-realtime-database

在HashMap中检索组密钥后,如何执行连接查询,该查询仅显示具有该特定用户成员的grp个详细信息。如果这种结构错误,请帮助我。

结构:

screenShot

1 个答案:

答案 0 :(得分:1)

  

在另一个DatabaseReference

中使用DatabaseReference
 // any way you managed to go the node that has the 'grp_key'
    DatabaseReference MembersRef = FirebaseDatabase.getInstance()
            .getReference()
            .child("Members")
            .child("1CkPG20Tt2dzrVkYkdfCLo")
            .orderByKey().equalTo("-KYnhiAucnasdkadNC")
            .addValueEventListener(
                    new ValueEventListener()
                    {
                        @Override
                        public void onDataChange(DataSnapshot dataSnapshot)
                        {
                            for (DataSnapshot child : dataSnapshot.getChildren())
                            {

                                Map<String, Object> valuesMap = (HashMap<String, Object>) dataSnapshot.getValue();

                                // Get push id value.
                                String key = valuesMap.get("grp_key");


                                // HERE WHAT CORRESPONDS TO JOIN
                                DatabaseReference chatGroupRef = FirebaseDatabase.getInstance().getReference()
                                        .child("Chat_groups")
                                        .orderByKey().equalTo(key)
                                        .addValueEventListener(
                                                new ValueEventListener()
                                                {
                                                    @Override
                                                    public void onDataChange(DataSnapshot dataSnapshot)
                                                    {
                                                        // repeat!!
                                                    }

                                                    @Override
                                                    public void onCancelled(DatabaseError databaseError)
                                                    {

                                                    }
                                                }
                                        )
                            }
                        }

                        @Override
                        public void onCancelled(DatabaseError databaseError)
                        {

                        }
                    }
            );