gpt4 book ai didi

java - 如何获取 Firebase 的内部子值?

转载 作者:行者123 更新时间:2023-12-01 16:35:26 25 4
gpt4 key购买 nike

我试图通过将节点与我的字符串数组进行比较来检索内部子值。我在 Firebase 中有以下数据库结构。

结构:

-Posts
-uid1
-postid1
-postid1:
-title:
-description:
-postid2
-postid2:
-title:
-description:
-uid2
-postid1
-postid1:
-title:
-description:

我想通过比较给定字符串数组中的 uid 来获取所有 postid 的数据。如何从 uid > postid > postid,title,description 中获取每个节点的 postid, title,description?

以下是我的 ID,我想将其与 Firebase uids 进行比较,以仅获取这些帖子的数据。

String uids[]={"uid1","uid2"};

如何在 Android Java 代码中编写解决方案?

我写过这样的东西。

final String uids[]={"id1","id2"};
DatabaseReference reference=FirebaseDatabase.getInstance().getReference().child("Posts");
reference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren())
{
for(int i=0;i< uids.length;i++)
if(uids[i].equals(ds.getKey()))
{
// stuck in here
}
}
}
public void onCancelled(@NonNull DatabaseError databaseError) {}
});

我被 UIDis 匹配的代码困住了。如何获取内部 postid 数据?

最佳答案

您可以使用递归方法解决此问题。首先,您需要将该数组转换为如下所示的列表:

String[] uids = {"uid1", "uid2"};
List<String> uidList = Arrays.asList(uids);

uidList设为全局变量:

private List<String> uidList;

并将上面的行更改为仅:

uidList = Arrays.asList(uids);

现在,定义一个引用:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference postsRef = rootRef.child("Posts");

并创建一个新的 Post 对象列表:

List<Post> posts = new ArrayList<>();

下面是发挥神奇作用的方法:

public void getAllUserPosts() {
if (uidList.size() > 0) {
String uid = uidList.get(0);
uidList.remove(0);
postsRef.child(uid).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
Post post = ds.getValue(Post.class);
posts.add(post);
}
getAllUserPosts();
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) { throw databaseError.toException(); }
});
}
}

最后只需调用这个方法即可:

getAllUserPosts();

结果将是一个包含所有用户的所有 Post 对象的列表。

关于java - 如何获取 Firebase 的内部子值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61959450/

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