如何在 Firebase 中执行连接查询? [复制]

Posted

技术标签:

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

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

结构:

【问题讨论】:

另见groups.google.com/forum/#!searchin/firebase-talk/join|sort:date/… 【参考方案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 的单个教程。

以上是关于如何在 Firebase 中执行连接查询? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Swift 在 Firebase 中使用 equalTo 查询查找子节点? [复制]

如何在 Linq 中执行左外连接? [复制]

在 Firebase 中搜索时如何执行 OR 查询?

如何查询 Firebase 中不存在子项的位置? [复制]

如何与firebase建立内部连接并与其连接reactjs前端[关闭]

如何对下表执行连接操作? [复制]