Android - Firebase数据库访问子目录

时间:2016-09-11 03:45:06

标签: android firebase firebase-realtime-database

这是我在firebase中的数据库

{
  "Rooms" : {
    "room1" : {
      "Header" : {
        "Recipient" : "JZrMZeE6JXYULHRtDbksfagnQE53",
        "Sender" : "fD0E2IbeGub53n1muYSYX88N6US2"
      },
      "Message" : {
        "MESSAGE-QWEASD" : {
          "Message" : "Hello World",
          "Name" : "fD0E2IbeGub53n1muYSYX88N6US2"
        }
      }
    }
  }
}

当我看到firebase数据库的指南时,它总是需要一个指定的位置来访问数据。但是,我想访问主目录(Rooms)的子目录(room1)而不指明其名称。现在,我需要指明名称来访问其房间名称中的数据。

dataSnapshot.child("Rooms").child("room1").getValue().toString()

是否有方法返回子目录的名称

的字符串

1 个答案:

答案 0 :(得分:0)

如果要访问Rooms,则需要像上面的节点一样创建Rooms对象。 但我认为你有room1,room2,room3 ......你的结构需要像那样(对象室中的数组列表易于解析为Object Room)。钥匙不会改变。

{
  "Rooms" : [ 
    {
    "name" : "room1",
     {
      "Header" : {
        "Recipient" : "JZrMZeE6JXYULHRtDbksfagnQE53",
        "Sender" : "fD0E2IbeGub53n1muYSYX88N6US2"
      },
      "Message" : {
        "MESSAGE-QWEASD" : {
          "Message" : "Hello World",
          "Name" : "fD0E2IbeGub53n1muYSYX88N6US2"
        }
      }
    }
  }
  {
       "name" : "room2",
       ....
  }
  ]
}

class Room {
    String name;
    Header Header;
    Message Message;
}

class Header {
    String Recipient;
    String Sender;
}

与Message类似,但我认为需要轻松删除MESSAGE-QWEASD,只有Message和Name才能轻松地将其作为Object。

最后

List<Room> rooms = (List<Room>)dataSnapshot.child("Rooms").getValue();