【发布时间】:2018-08-19 03:46:01
【问题描述】:
FirebaseDatabase.getInstance().getReference("Block").addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snap : dataSnapshot.getChildren()) {
if(snap.getKey().equals(myUID)){
FirebaseDatabase.getInstance().getReference("Block").child(myUID).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snap : dataSnapshot.getChildren()) {
if(snap.getKey().equals(list.get(position).getUid())){
FirebaseDatabase.getInstance().getReference("Block").child(myUID).child(list.get(position).getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snap : dataSnapshot.getChildren()) {
if(snap.getValue().equals("1")){
call_method();
}else{
//code...
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} else {
call_method();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
} else {
call_method();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这段代码运行良好,但很长,所以我想问一下最好的写法?
我想首先检查 Block 节点是否有子节点等于 my UID 如果它是真的然后我想检查 my UID有孩子等于 特定的 UID 如果它是真的,那么我想获得块的值,在这个例子中是 0
我该怎么做?非常感谢。
【问题讨论】:
-
如果您读取位置
Block,快照将包含该位置下的所有内容。您不需要为每个孩子重新查询。只需进入快照子项即可找到您要查找的数据。 firebase.google.com/docs/reference/android/com/google/firebase/… -
谢谢,我阅读了文档,但我不知道如何阅读位置 .. 抱歉,我是 Firebase 的初学者 ..你能帮帮我吗?
-
使用引用“child”或“children”的方法。
标签: java android firebase firebase-realtime-database