使用随机密钥检索Firebase数据

时间:2018-06-12 22:28:58

标签: java android firebase firebase-realtime-database

我的android应用程序有一个firebase数据结构,我想从push()方法生成的随机密钥中检索数据,该方法是Forum节点的子节点,它是数据库的根节点的子节点。请建议我这样做的方法。感谢。

data structure

3 个答案:

答案 0 :(得分:0)

您可以获取父“论坛”节点的所有子节点。只需使用getChildren()方法。然后只需在位置索引处随机选择一个子节点。

DataSnapshot snapshot = dataSnapshot.child("Forums");
Iterable<DataSnapshot> children = snapshot.getChildren();

for (DataSnapshot child: children) {
        Object obj = child.getValue(Object.class);
}

答案 1 :(得分:0)

首先你应该编写你的班级模型&#34; FormusModel&#34; 来存储来自服务器的数据 你可以用这个

  >   > 

rootRef.child("Forums").addChildEventListener(new
    > ChildEventListener() {
    >     >                 @Override
    >     >                 public void onChildAdded(DataSnapshot dataSnapshot, String s) {
    >     >                     ForumsModel model = dataSnapshot.getValue(FormusModel.class);
//now you can use model.getname();.... 
    >     }

注意:你必须实现另一种方法,例如 onChildCahnge 监听器

答案 2 :(得分:0)

要显示Forums节点下所有子节点的值,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference forumsRef = rootRef.child("Forums");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            String ques = ds.child("ques").getValue(String.class);
            String title = ds.child("title").getValue(String.class);
            String uid = ds.child("uid").getValue(String.class);
            Log.d("TAG", name + " / " + ques + " / " + title + " / " + uid);
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
};
forumsRef.addListenerForSingleValueEvent(valueEventListener);