如何在 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 查询查找子节点? [复制]