如何从Firebase实时数据库中的不同子项获取值?

时间:2020-10-10 06:08:58

标签: android firebase firebase-realtime-database

这是我的数据库体系结构,其中乔布斯是主要子级,在该体系结构下将有用户子级,并且用户可以发布多个时间。现在我想一次让所有用户完成所有帖子。可以这样做吗?

https://i.stack.imgur.com/DT3MO.jpg

setQuery(FirebaseDatabase.getInstance().getReference().child("Jobs")

使用该查询从所有用户那里获取所有帖子,但是没有用。有更好的解决方案吗?

setQuery(FirebaseDatabase.getInstance().getReference().child("Jobs").child("Uid");

这一项有效,但不能使用,因为我想让所有用户自由读取数据。

1 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Jobs");

reference.addListenerForSingleValueEvent(new ValueEventListener() {
 @Override
public void onDataChange(DataSnapshot dataSnapshot) {
   for(DataSnapshot ds : dataSnapshot.getChildren()){
         String key = ds.getKey();
     for (DataSnapshot childSnapshot: ds.getChildren()) {
           // get the child attribute under the random key
        }
    }
 }
 @Override
public void onCancelled(DatabaseError databaseError) {
       throw databaseError.toException();
    }
 });

由于已经引用了节点Jobs,因此在第一次迭代中,您可以获得随机密钥(在图像中突出显示),而在第二次迭代中,您可以获得这些密钥内部的属性。