我正在制作博客发布应用。我需要显示带有作者姓名和时间的帖子。
我正在posts/uid/key
将帖子添加到数据库这个键由Firebase在推送值时添加。我无法将此键设置为固定值,因为每个帖子都有不同的名称,时间和正文。
现在,在检索数据时,我想知道如何在posts/uid/key/
获取数据
我正在使用这个循环来遍历posts/
的所有孩子。但我不能进一步进入嵌套,因为我不知道键是什么
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
String uid = (String) postSnapshot.child("uid").getValue();
String body = (String) postSnapshot.child("body").getValue();
}
}
我将上面的监听器附加到此引用
mPostReference = FirebaseDatabase.getInstance().getReference().child("posts");
如何在不知道密钥的情况下获取密钥的子项?
private DatabaseReference mPostReference;
mPostReference = FirebaseDatabase.getInstance().getReference()
.child("posts");
ValueEventListener postListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// Get Post object and use the values to update the UI
for (DataSnapshot postSnapshot: dataSnapshot.getChildren()) {
String uid = (String) postSnapshot.child("uid").getValue();
String body = (String) postSnapshot.child("body").getValue();
Toast.makeText(getActivity(), body,
Toast.LENGTH_SHORT).show();
}
}
导出JSON
{
"posts" : {
"-KTGou5X14D8pq1sxyhR" : {
"body" : "first post",
"timestamp" : 1475620339666,
"uid" : "tmFt3NbcnLVlkrWQrIx1"
},
"-KTGp3mfM4krbGoTMZ8t" : {
"body" : "second post",
"likeCount" : 0,
"uid" : "tmFt3NbiwLVlkrWQrIx1"
}
}
}