【发布时间】:2018-07-10 19:07:37
【问题描述】:
【问题讨论】:
-
/areas下似乎有两个动态/按钮。 Firebase 实时数据库查询在节点的平面列表上工作,并在每个直接子节点下的固定位置对值进行排序/过滤。见stackoverflow.com/questions/27207059/…。
标签: android firebase firebase-realtime-database firebaseui
【问题讨论】:
/areas 下似乎有两个动态/按钮。 Firebase 实时数据库查询在节点的平面列表上工作,并在每个直接子节点下的固定位置对值进行排序/过滤。见stackoverflow.com/questions/27207059/…。
标签: android firebase firebase-realtime-database firebaseui
请使用此代码:
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference userIdRef = rootRef.child("areas").child(userId);
ValueEventListener eventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds : dataSnapshot.getChildren()) {
String areaId = ds.child("areaId").getValue(String.class);
Boolean booked = ds.child("booked").getValue(Boolean.class);
Integer bookingHour = ds.child("bookingHour").getValue(Integer.class);
//and so on
Log.d("TAG", areaId + " / " + booked + " / " + bookingHour);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {}
};
userIdRef.addListenerForSingleValueEvent(eventListener);
其中userId是表示不丢失的用户的id。
当您对 Firebase 数据库执行查询时,可能会有多个结果。 所以快照包含这些结果的列表。即使只有一个结果,快照也会包含一个结果列表。
【讨论】:
rootRef.child("areas").child(userId),这意味着我们在树中找到了userId 节点。使用getChildren() 意味着我们正在从那里获取所有孩子。因为在这个护理中只有一个孩子,我们可以从那个节点获得所有孩子,areaId, booked, bookingHour and so on。