在Firebase

时间:2016-10-04 21:57:23

标签: android firebase firebase-realtime-database

我正在制作博客发布应用。我需要显示带有作者姓名和时间的帖子。 我正在posts/uid/key将帖子添加到数据库这个键由Firebase在推送值时添加。我无法将此键设置为固定值,因为每个帖子都有不同的名称,时间和正文。 现在,在检索数据时,我想知道如何在posts/uid/key/获取数据 我正在使用这个循环来遍历posts/的所有孩子。但我不能进一步进入嵌套,因为我不知道键是什么

enter image description here

 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"
    }
  }
}

0 个答案:

没有答案