【问题标题】:How to perform join query in Firebase? [duplicate]如何在 Firebase 中执行连接查询? [复制]
【发布时间】:2017-04-29 08:57:44
【问题描述】:

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

结构:

【问题讨论】:

标签: android join firebase firebase-realtime-database


【解决方案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)
                        {

                        }
                    }
            );

【讨论】:

  • 您能否告诉我如何将此数据与 Firebase 回收器适配器结合起来,非常感谢#amrelghobary 先生
  • @ArjunThakkar 你可以使用FirebaseIndexRecyclerAdapter加入它
  • @amrelghobary 谢谢先生。最后一个问题,如果我有一个组而不是所有这些工作正常,但是如果我有多个组怎么办。第一个 MembersRef 你提到了“orderByKey().equalTo("-KYnhiAucnasdkadNC")”这里插入了“-KYnhiAucnasdkadNC”这个单个随机键我有随机键列表而不是我应该做什么?
  • 我不太了解您的问题,但FirebaseIndexRecyclerAdapter 会为您处理传递位置中的所有键。如果对您有帮助,记得将我的回复标记为答案!
  • @amrelghobary 先生,你能解释一下如何在 FirebaseIndexRecyclerAdapter 中获取 keyref 和数据库注册吗,我搜索了很多,但我找不到关于 FirebaseIndexRecyclerAdapter 的单个教程。
猜你喜欢
  • 2017-09-05
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多