【问题标题】:Read data from different directories using Firebase for Android使用 Firebase for Android 从不同目录读取数据
【发布时间】:2017-03-01 08:37:27
【问题描述】:
/users:
 - user1
       - name: user1name
       - /contacts
              - user2
              - user3
                .....
 - user2
       - name: user2name
       ....

这是我当前的 firebase 数据库。当 user1 登录时,我检查他有哪些联系人并获取他们的 UID。现在我有了他们的 UID,我正在尝试读取他的联系人姓名。我怎样才能得到他每个联系人的名字?我是否必须阅读整个 /users 目录,或者我可以使用只检索我想要的数据的查询。 (本例为user2和user3的名字)

【问题讨论】:

  • 你会做一个嵌套读取。所以检索/users/$uid/contacts,然后遍历其中的键并为每个键加载/users/$key
  • 谢谢。正是我想知道的。如果您将此评论作为答案发布,我会将其标记为解决方案。

标签: android firebase-realtime-database


【解决方案1】:

您会进行嵌套读取。所以检索/users/$uid/contacts,然后遍历其中的键并为每个键加载/users/$key

【讨论】:

    【解决方案2】:

    假设您已经选择了用户,您可以通过两种方式进行操作:

    1) 在您的数据库引用中使用.child(String user);

    2) 您可能已经为您的数据库声明了一个 URL。将+ "/" + String user; 添加到您的网址。

    您可以进一步使用这些方法来解析该用户的联系人。

    最后,要检索联系人,您必须循环访问。

    这是一个示例代码:

      mRef.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot snapshot) {
                for (DataSnapshot msgSnapshot : snapshot.getChildren()) {
                        mDataset.add(msgSnapshot.getKey());
                        mAdapter.notifyDataSetChanged();
    
                }
            }
    

    这个 sn-p 获取数据并将其添加到您的适配器(可用于填充列表视图、网格视图等)

    【讨论】:

    • 感谢您的回复。我知道如何获取不同的属性,例如用户名。我试图询问如何检索作为 user1 联系人的每个用户的名称。我希望你明白我想说什么。这不是一个名字。这是关于几个名字的。我是循环检索数据还是有其他方法?
    • 如果有多个条目(这对于联系人列表很明显),则必须进行循环。
    猜你喜欢
    • 1970-01-01
    • 2018-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-30
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多