检索有关组中所有用户的信息

时间:2017-07-14 06:56:09

标签: android firebase firebase-realtime-database

如何在单个查询对象中检索有关同一组中用户的所有信息?这是为了填充显示用户的一些列表ui。我正在使用FirebaseRecyclerAdapter,并且在其构造函数中它需要一个查询对象。我的数据结构与firebase文档中“结构化您的数据库”页面的结构相同。

在我的特定情况下,我试图获取在一个查询对象中由单个用户添加书签的所有故事。我的数据结构如下所示:

Stories structure

Users structure

我试图这样做:

Query recentPostsQuery = databaseReference.child("users/" + uid + "/bookmarks");
    recentPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot storySnapshot : dataSnapshot.getChildren()) {
                databaseReference.child("stories/" + storySnapshot.getKey());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {}
    });

然而,它不起作用,我不太清楚为什么。

1 个答案:

答案 0 :(得分:0)

我猜你有一个列表来存储故事和模型类故事。

Query recentPostsQuery = databaseReference.child("users/" + uid + "/bookmarks");
recentPostsQuery.addListenerForSingleValueEvent(new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        for (DataSnapshot storySnapshot : dataSnapshot.getChildren()) {
            databaseReference.child("stories/" + storySnapshot.getKey()).addListenerForSingleValueEvent(new ValueEventListner(){
               @Override
               public void onDataChange(DataSnapshot dataSnapshot) {
                //Stories your model class
                   for (DataSnapshot story : dataSnapshot.getChildren()){
                   Stories story = story.getValue(Stories.class);
                   //add story to list for showing in recycler view
                   // also call adapter.notifyDataSetChanged();
                   }
               }
               @Override
               public void onCancelled(DatabaseError databaseError) {}
             });
        }
    }

    @Override
    public void onCancelled(DatabaseError databaseError) {}
});

我想这有帮助..