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) {
}
});
这段代码效果很好,但是很长,所以我要求最好的方法来编写它?
我想首先检查阻止节点是否有子等于我的UID 如果是,那么我想检查我的UID 如果为true,则子项等于特定UID ,然后我想获取此示例中 0 的块值
我该怎么做?非常感谢你。
答案 0 :(得分:2)
只需遍历使用child
指定的路径。如果路径不存在,您将不会获得任何数据。
FirebaseDatabase.getInstance().getReference("Block")
.child("MyUUID")
.child("specificUUID")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exists()) {
// ... Do something
} else {
call_method();
}
// ... Other code
}
答案 1 :(得分:1)
试试这个:
Firebaseuser user=FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference ref = FirebaseDatabase.getInstance().getReference().child("Block");
ref.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.exist()){
//checks first uid
if(dataSnapshot.hasChild(seconduid){
//checks if seconduid is there
for(DataSnapshot datas:dataSnapshot.getChildren()){
String blocks=datas.child("block").getValue().toString();
}
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
这将检查第一个uid if(dataSnapshot.exist())
之后它将检查uid
节点是否具有您提供的第二个uid if(dataSnapshot.hasChild(seconduid){
然后您将迭代并获取节点{{1 }}