我有一个firebase数据库,我想从中访问一些嵌套节点,然后将数据列表添加到该特定节点

时间:2017-08-04 11:46:25

标签: java android firebase firebase-realtime-database

我有一个firebase数据库,其结构如下: databse structure

pages节点是一个数组列表,如[0,1,2,3 ...]。现在我想获得对每个页面节点子“data”的引用,然后是子节点“meetingRooms”,然后在“meetingRooms”节点中添加一个新的子节点,该节点将再次成为“pages”节点的列表。 / p>

这是我到目前为止尝试过的代码 //供参考数据库

 mMeetingRoomsDatabaseReference = FirebaseDatabase.getInstance().getReference("/pages").child("/data");

然后将数据添加到Firebase:

public void updateBookings(){
    String startTime = "9:00 am";
    String endTime = "11:00 am";
    Map<String,Object> values = new HashMap<>();
    values.put("startTime" , startTime);
    values.put("endTime" , endTime);
    values.put("bookingRoomId" , meetingRoomId);
    values.put("date" , resultDate);
    values.put("userUid" , userGoogleId);
    DatabaseReference ref = mMeetingRoomsDatabaseReference.child("/meetingRooms").child("bookings");
    ref.push().updateChildren(values);
}

然后单击按钮调用此方法。 这是在firebase中的“pages”节点添加一个全新的节点,如下所示: after adding the data the firebase structure is this.

任何人都可以帮助我解决我在这里做错了什么吗?非常感谢帮助。

1 个答案:

答案 0 :(得分:1)

This is happening because you are missing a child. You actual DatabaseReference is:

mMeetingRoomsDatabaseReference = FirebaseDatabase.getInstance().getReference("/pages").child("/data");

and you need to change it like this:

mMeetingRoomsDatabaseReference = FirebaseDatabase.getInstance().getReference()
    .child("pages")
    .child("0") //This child was missing
    .child("data");

The is an example for a particular one named -> "0". You can change this with an actual variable.

Hope it helps.