gpt4 book ai didi

java - Firebase:根据另一个节点中的字段从一个节点获取特定字段

转载 作者:行者123 更新时间:2023-11-29 18:57:11 24 4
gpt4 key购买 nike

我已经用谷歌搜索了 3 个小时,但既无法正确表达搜索词,也没有好的解决方案。我正在为我的 android 应用程序使用 firebase。它具有如下结构: firebase db上一个是评论节点

我刚刚使用 ListView 显示了评论。

commentRef1= FirebaseDatabase.getInstance().getReference().child("Comments").child(postKey1);
commentRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for(DataSnapshot ds: dataSnapshot.getChildren()){
comment1=ds.getValue(Comment.class);
arrayList.add(comment1);
}
commentList.setAdapter(adapter);
}
}

@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

但与每个关系数据库一样,我试图在评论(表)或节点(而不是整个用户名)中保存 id 或 uid。

但是,现在我在显示来自用户节点(即显示名称)的评论时遇到问题查询或显示用户名,因为 uid 仅保存在评论节点中。

我发现了一些方法,比如做嵌套的 oneventlistener 等等,但有点混淆了它的复杂性和需要的努力。在任何 sql 语言中,它都是简单的查询或嵌套选择。

有人可以帮忙吗?我如何在该查询中检索用户名或特定值。我看到很多人在评论表中存储 while 用户名。我不认为这是正确的做法。

最佳答案

要获取全名,您需要执行以下操作:

 DatabaseReference ref=FirebaseDatabase.getInstance().getReference();
commentRef1= FirebaseDatabase.getInstance().getReference().child("Comments").child(postKey1);
commentRef1.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()){
for(DataSnapshot ds: dataSnapshot.getChildren()){
String userid=ds.child("uid").getValue().toString();
ref.child("Users").orderByKey().equalTo(userid).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String fullname=dataSnapshot.child("full_name").getValue().toString();
}
@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}
}
}

@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}

您可以使用嵌套监听器,我想您希望用户键入评论然后单击按钮并使用 uid、post_id、评论为评论创建节点。

然后你想检索评论以显示它的信息,所以数据快照将在 Comments/postKey1 然后你可以在那里检索信息(包括 uid),然后使用 orderByKey().equalTo(userid) 能够从节点 Users

中检索用户的全名

要避免所有这些,只需在 Comments 节点中添加 fullname 而不是 userid

https://firebase.googleblog.com/2013/04/denormalizing-your-data-is-normal.html

关于java - Firebase:根据另一个节点中的字段从一个节点获取特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49774987/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com